MSTest中runsettings和testsettings之间的区别究竟是什么?

时间:2016-06-10 07:29:25

标签: c# .net visual-studio unit-testing mstest

我正在进行单元测试项目,示例代码如下。基本上我的计划是在运行时创建数据,这些数据将作为单元测试的数据源。

[TestMethod]
[TestCategory("UITest"), TestCategory("PersonalDetailsFlow")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\TestFlows.xml", "flow", DataAccessMethod.Sequential)]
public void TestMethod1()
{
 //Test Code
} 


[ClassInitialize]
public static void ClassInit(TestContext context)
{
    DriverData driverData = new DriverData();
    driverData.DataGenerator();
}

数据创建发生在ClassInitialize部分。当我将设置文件设置为testsettings文件时,项目运行没有任何问题。

当我将testsettings文件更改为指向runsettings文件时(因为我从runsettings文件传递了大量数据),我得到以下错误行" 单元测试适配器无法连接到数据源或读取数据。有关解决此错误的详细信息,请参阅"数据驱动单元测试排除"

我很想知道当我使用testsettings使其成功但是在使用runsettings文件时遇到所有问题以及如何在使用runsettings文件时避免这种情况时发生的事情。

另请参阅How to execute a line of code which is a data setup code in MSTest before all test

2 个答案:

答案 0 :(得分:4)

基本上,testsettings文件是为了与旧的单元测试兼容。它已在VS 2013中由runsettings取代。当使用testsettings时,它会回退到一些遗留兼容模式,这种模式在相对路径和东西等方面表现不同。不知道你遇到的实际问题。

答案 1 :(得分:-1)

@Stefan Steinegger,我想补充一点,运行设置也可以在Visual Studio 2012中使用。

mstest.exe是x86进程,而vstest.console.exe是x64进程。

定义了运行设置后,就无法使用mstest.exe执行单元测试。如果您希望使用mstest.exe,则将强制您使用解决方案定义测试设置。

使用mstest.exe,您无法运行为x64目标平台构建的单元测试程序集。要使用mstest.exe运行单元测试程序集,需要将其构建为x86或AnyCpu目标平台。

如何定义这两个设置文件中的一个已定义here