c# - TestContext 名称如何与给定代码相关?
问题描述
我正在使用 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 为空。该物业在这里如何运作?这仅在名称为 TestContext 时有效。我对 C# 编程很天真。
解决方案
您可能已经注意到您自己并没有分配TestContext
属性,但它以某种方式获得了它的价值。它如何获得价值?测试框架分配它。它如何找到该属性?它查找名为TestContext
type的属性TestContext
。因此,当您更改名称时 - 它无法再找到它并且无法分配值,因此它保持为空。
您可以在文档中阅读有关此类的更多信息。这个问题的相关部分是:
运行单元测试时,如果包含单元测试方法的测试类定义了 TestContext 属性,则会自动为您提供 TestContext 类型的具体实例。
推荐阅读
- pdf - PDF Unicode 文本编码不正确
- javascript - 为什么 create-react-app 不使用箭头函数组件?
- android - 这是什么Android视图?
- java - 如何在java控制台程序中初始化字符串变量?
- python - IndexError:列表分配索引超出范围。我该如何解决这个问题?
- java - Apache Lucene 一对多查询
- c++ - 即使变量为假,“如果”也会执行
- python - 如何在 Google Drive API 中获取目录路径
- c# - 传递字典
如果满足某些标准,则从一种形式到另一种形式 - aframe - 如何在顶部覆盖文本
使用 AR.js 和 A-Frame?