【问题标题】:What exactly is the difference between runsettings and testsettings in MSTestMSTest 中的 runsettings 和 testsettings 到底有什么区别
【发布时间】:2016-06-10 07:29:24
【问题描述】:

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

[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

【问题讨论】:

  • “将 testsettings 文件更改为指向 runsettings 文件”是什么意思?

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


【解决方案1】:

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

【讨论】:

  • 谢谢。我的问题是我需要在测试开始之前执行一些代码行。这是使用 testsettings 而不是使用 runsettings 文件发生的
  • 你在使用TestInitialize、ClassInitialize、AssemblyInitialize吗?
  • 是的。我尝试了所有选项,但现在没有初始化选项。感谢您的建议
  • @StefanSteinegger 你能在运行设置中为所有测试设置超时吗?
【解决方案2】:

runsettings 和 testsettings 之间的区别取决于您希望如何运行单元测试。

微软对两者的解释是here

您可以使用 mstest 或 vstest 流程执行单元测试。 mstest.exe 是 x86 进程,vstest.console.exe 是 x64 进程。

当您只定义了一个运行设置时,您无法使用 mstest.exe 执行单元测试。

如果你想使用 mstest.exe

  • 这会强制您使用解决方案定义 testsettings
  • 您无法运行为 x64 目标平台构建的单元测试程序集
  • 需要构建单元测试程序集 作为 x86 或 AnyCpu 目标平台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2019-05-04
    • 2020-03-12
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多