MSTest提供了一个[ClassInitialize]
属性,该属性可以放置在static
方法上以提供一次性初始化。
假设我在测试类中有一个静态成员,我希望在这样的[ClassInitialize]
方法中初始化。如何标记它不可为空?
private static Database _database;
[ClassInitialize]
public static void InitializeClass(TestContext testContext)
{
_database = new Database();
}
与#nullable enable
,我得到一个非常可以理解的警告:CS8618Non-nullable field '_database' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
我可以将初始化移到构造函数中(但对于每个测试方法都会发生)。我可以使用免空运算符(!
)。是否有更好的选择来标记_database
不为空?
我更喜欢在这种情况下使用null宽恕。具体来说,您可以只设置您知道将被填充的属性,但编译器无法使用null!
进行拾取。
例如:
private static Database _database = null!;