在 MSTest TestContext 中存储数据或在 TestRun 期间以其他方式存储数据

Store Data in MSTest TestContext or other way to store data during TestRun

我有办法在 MsTest 的 TestContext 中全局存储数据吗?或者另一种在测试运行期间存储数据的机制?

我想在 Assembly Initialize 中从 Rest-Resource 读取一个字符串,并将其存储在某个地方,以便在我的 TestMehtod 自定义实现期间访问它。

想到了 2 个解决方案。

运行设置

第一个是带有 Visual Studio 和 MSTest 的 RunSettings 文件的更集成的解决方案。在 XML 结构中定义的 RunSettings 文件中,您已经预定义了 <TestRunParameters> 可以在方法或 class 中访问和设置,这些方法或 class 由 MSTest 装饰器装饰(例如 [AssemblyInitialize][TestClass]、等等)。在这些装饰方法或 classes 中,您当然可以访问 TestContext 对象,并且在这个 TestContext 对象中,您可以获取或设置在 <TestRunParameters> 通过使用 TestContext.Properties

例如,假设您有一个 RunSettings 文件,

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
    <TestRunParameters>
        <Parameter name="Name" value="Dan" />
    </TestRunParameters>
</RunSettings>

您可以在测试中执行此操作 class:

[TestClass]
public class Configuration 
{
    [ClassInitialize]
    public static void ClassInitialize(TestContext testContext) 
    {
        Console.Write(testContext.Properties["Name"]); // Outputs "Dan"

        // The TestContext object will be modified and the updated value 
        // will be ready the next time it's retrieved
        testContext.Properties["Name"] = "John"; 
    }
}

静态类

或者,您可以有一个静态的 class,其唯一目的是初始化和存储您的字符串。