我正在使用MicrosoftTestTools。我有一个包含[TestMethod]和[ClassInitialize]的A类。
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
Setup(context);
}
安装的定义存在于B类(A类的基础类)中。
public static void Setup(TestContext context)
{
something
}
[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为null。该物业如何运作?仅当名称为TestContext时才有效。我对C#编程很天真。
答案 0 :(得分:2)
您可能已经注意到,您自己并未指定TestContext
财产,但不知何故,它会获得其价值。如何获得价值?测试框架分配它。它是如何找到财产的?它会查找名为TestContext
的{{1}}类型的属性。因此,当您更改名称时 - 它无法再找到它并且无法分配值,因此它保持为空。
您可以在documentation中详细了解此课程。这个问题的相关部分是:
当您运行单元测试时,会自动为您提供一个 TestContext类型的具体实例,如果是测试类 包含您的单元测试方法已定义TestContext属性。