可空引用类型和MSTest ClassInitialize



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!;

最新更新