【问题标题】:Is there a C# mstest equivalent of system property in Java?Java 中是否存在与系统属性等效的 C# mstest?
【发布时间】:2023-03-14 02:45:01
【问题描述】:
我希望能够将系统参数“主机”传递给 MStest 套件。为了为持续集成创建自动化作业,我希望能够将主机指定为参数,以便在该特定主机上运行测试。我在 mstest 中找不到任何这样的选项。
在 Java 中, -Dhost="localhost" 可以工作,可以将其指定为正在运行的 VM 的参数。 MStest for C# 中是否有类似的方法?
【问题讨论】:
标签:
c#
.net
properties
system
mstest
【解决方案1】:
没有与您提到的 Java 系统属性等效的东西。以下是关于如何近似您正在寻找的内容的一些想法:
[1]
Visual Studio 测试支持确实包括 Test Run Configurations(在 Visual Studio 2010 中重命名为 Test Settings)。这是一个文件,它指定了许多控制测试运行方面的设置。例如,您可以在测试旁边部署其他文件,或者在测试运行开始之前运行“设置”批处理脚本。
如果您有一组有限的主机,您可以为每个主机单独设置测试运行配置/测试设置。每个配置/设置都会部署一个包含不同主机名称的文件。然后,您可以将该文件作为单元测试设置的一部分读取,可能来自您的[TestInitialize] 方法。有点做作,但也许它会做你想做的。
[2]
您可以在运行测试之前设置一个系统环境变量(例如“TESTHOST”),然后从您的测试中读取该环境变量。您可以将所有这些封装在一个简单的程序或批处理脚本中,该脚本接受一个参数来设置环境变量、调用 mstest,然后再取消设置环境变量。例如,this StackOverflow post 可能会为您提供一些关于如何使用 PowerShell 执行此类操作的想法。
【解决方案2】:
我不相信有一个确切的等价物。相反,请尝试利用 .NET 配置文件:
将应用程序配置文件 (App.config) 添加到您的 MSTest 项目。将您的“系统”属性添加为 appSettings 部分中的键。使用 ConfigurationManager.AppSettings 集合在您的测试中引用这些值。