Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TestContext名称在给定代码中的相关性如何?_C#_Visual Studio_Unit Testing_Mstest - Fatal编程技术网

C# TestContext名称在给定代码中的相关性如何?

C# 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() {

我正在使用MicrosoftTestTools。我有一个包含[TestMethod]和[ClassInitialize]的类a

[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){}
}