gpt4 book ai didi

c# - TestContext 名称与给定代码有何关联?

转载 作者:行者123 更新时间:2023-11-30 16:40:44 25 4
gpt4 key购买 nike

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

[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
Setup(context);
}

Setup 的定义存在于 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 为空。这里的属性(property)如何运作?这仅在名称为 TestContext 时有效。我对 C# 编程很天真。

最佳答案

您可能已经注意到您没有自己分配 TestContext 属性,但是它以某种方式获得了它的值。它如何获得值(value)?测试框架分配它。它如何找到该属性?它查找类型为 TestContext 的名为 TestContext 的属性。因此,当您更改名称时 - 它无法再找到它并且无法分配值,因此它保持为空。

您可以在 documentation 中阅读有关此类的更多信息.这个问题的相关部分是:

When you run a unit test, you are automatically provided with a concrete instance of the TestContext type, if the test class that contains your unit test method has a TestContext property defined.

关于c# - TestContext 名称与给定代码有何关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50508887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com