首页 > 解决方案 > 在 MSTest TestContext 中存储数据或在 TestRun 期间存储数据的其他方式

问题描述

我是他们在 MsTest 的 TestContext 中存储全局数据的一种方式吗?还是在 TestRun 期间存储数据的另一种机制?

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

标签: c#mstest

解决方案


想到了2个解决方案。

运行设置

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

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

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

你可以在你的测试类中做到这一点:

[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"; 
    }
}

静态类

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


推荐阅读