OneTimeSetUp 的空引用类型

Null Reference Type with OneTimeSetUp

可以使用

<Nullable>enable</Nullable>

在 nunit 开发的项目中,使用了在 OneTimeSetup 中初始化的字段,但没有获取 “警告 CS8618:不可为 null 的字段‘...’在退出构造函数时必须包含非 null 值。考虑将该字段声明为可为 null。”。

我希望为我在 OneTimeSetup 中初始化的字段添加 [NotNull] 之类的注释,但没有成功。

一种(有点不愉快!)方法是使用 null 宽容运算符:

private string _setInOneTimeSetUp = null!;

[OneTimeSetUp]
public void OneTimeSetUp()
{
    _setInOneTimeSetUp = "value used in tests";
}

这与 <Nullable>enable</Nullable><TreatWarningsAsErrors>true</TreatWarningsAsErrors> 一起编译。考虑到 NUnit 总是会先调用 OneTimeSetUp,这在逻辑上是安全的,但是任何时候使用 null 宽容运算符都会有点代码味道。