我正在使用MicrosoftTestTools。我有一个包含[TestMethod]和[ClassInitialize]的类A。
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
Setup(context);
}
B类(A类的基类)中提供了安装程序的定义。
public static void Setup(TestContext context)
{
something
}
B类中存在[TestCleanUp]。
[TestCleanup]
public void TestCleanUp()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Failed){}
}
为了在TestCleanUp方法中获得TestContext,我在类B中创建了一个类似于下面的属性。
public TestContext TestContext { get; set; }
工作正常。但是当我像这样更改声明时,
public `TestContext CurrentContext{ get; set; }`
所以功能像
[TestCleanup]
public void TestCleanUp()
{
if (CurrentContext.CurrentTestOutcome == UnitTestOutcome.Failed){}
}
CurrentContext为null。该物业在这里如何运作?仅当名称为TestContext时,此方法才有效。我对C#编程很幼稚。
最佳答案
您可能已经注意到,您自己没有分配TestContext
属性,但是以某种方式获得了它的值。它如何获得价值?测试框架为其分配。它如何找到该财产?它查找类型为TestContext
的名为TestContext
的属性。因此,当您更改名称时-它无法再找到它并且无法分配值,因此它保持为空。
您可以在documentation中阅读有关此类的更多信息。该问题的相关部分是:
运行单元测试时,系统会自动为您提供
TestContext类型的具体实例,如果测试类
包含您的单元测试方法的TestContext属性已定义。
关于c# - TestContext名称在给定代码中如何相关?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50508887/