在 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,其唯一目的是初始化和存储您的字符串。
我有办法在 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,其唯一目的是初始化和存储您的字符串。