C# TestContext名称在给定代码中的相关性如何?
我正在使用MicrosoftTestTools。我有一个包含[TestMethod]和[ClassInitialize]的类aC# TestContext名称在给定代码中的相关性如何?,c#,visual-studio,unit-testing,mstest,C#,Visual Studio,Unit Testing,Mstest,我正在使用MicrosoftTestTools。我有一个包含[TestMethod]和[ClassInitialize]的类a [ClassInitialize] public static void ClassInitialize(TestContext context) { Setup(context); } B类(A类的基类)中有设置的定义 [TestCleanUp]存在于B类中 [TestCleanup] public void TestCleanUp() {
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
Setup(context);
}
B类(A类的基类)中有设置的定义
[TestCleanUp]存在于B类中
[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为空。这里的房产是怎么运作的?这仅在名称为TestContext时有效。我对C#编程很幼稚 您可能已经注意到,您自己没有分配
TestContext
属性,但它以某种方式获得了它的值。它是如何得到一个值的?测试框架分配它。它是如何找到那笔财产的?它查找类型为TestContext
的名为TestContext
的属性。因此,当您更改名称时,它将无法再找到它,也无法赋值,因此它将保持为空
你可以在中阅读更多关于这门课的信息。这一问题的相关部分是:
运行单元测试时,系统会自动为您提供
TestContext类型的具体实例,如果测试类
包含已定义TestContext属性的单元测试方法
[TestCleanup]
public void TestCleanUp()
{
if (CurrentContext.CurrentTestOutcome == UnitTestOutcome.Failed){}
}