问:是否可以在 VS 2013 中与 MSTest 并行运行 xunit 测试?如果是这样,我做错了什么?

背景:

我已将 .NET 解决方案从 VS 2012 格式迁移到 VS 2013。

我无法让 xUnit 测试工作。经过多次故障排除(试验项目类型、MS Tools 版本、仅使用 xUnit 创建新项目,以及试验 xUnit 版本和依赖项)后,我能够将问题缩小到将 MSTest 与 xUnit 测试放在同一个项目中。这在 VS 2012 之前有效。

只要我只包含一种标有 [TestMethod] 的测试方法属性,不会运行任何 xUnit 测试。它们可能会出现在 VS 测试资源管理器或 ReSharper 单元测试 session 面板中,但它们会在 Not Run Tests(对于测试资源管理器)或 [?](对于单元测试 session )下显示为 [!]。与 [TestClass] 一起上课属性,但不是标记为 [TestMethod] 的方法仍然允许运行 xUnit 测试。

事实证明,这是 xUnit 组件中的一个错误,但我想看看其他人是否有任何相反的经验。

注意:几乎所有的单元测试都基于 xUnit,MSTest 只是作为一个概念验证来确保它在以后使用 MSTests 的情况下得到支持。

代码摘录:

MS测试:

using Microsoft.VisualStudio.TestTools.UnitTesting; 
 
namespace YYY.XXX.Test.Unit 
{ 
    [TestClass] 
    public class MSTests 
    { 
        [TestMethod] 
        public void Test_Blah() 
        { 
            Assert.AreEqual(2, 2); 
        } 
    } 
} 

x单位:
using Xunit; 
 
namespace YYY.XXX.Test.Unit 
{ 
    public class FactTests 
    { 
        [Fact] 
        public void Test_Blah() 
        { 
            Assert.Equal(2, 2); 
        } 
    } 
} 

软件版本:
  • MS Visual Studio Ultimate 2013 12.0.210051 REL
  • JetBrains ReSharper 8.1
  • 适用于 Visual Studion 2012 和 2013 v0.99.2 的 xUnit.net 运行器
  • ReSharper 扩展:
  • xUnit.net 测试支持 v1.3.0
  • xUnit 项目包:
  • xunit.1.9.2
  • xunit.extensions.1.9.2
  • 请您参考如下方法:

    Resharper 问题 xunit/vstestrunner 修复:(也花了很长时间才弄明白这个问题)
    您可以获得 resharper 8.2 或更高版本。

  • 或者 -
    一键关闭 Resharper 测试
    在 VS 中单击 Resharper -> 选项 -> 单元测试 - 取消选中启用单元测试。



  • 测试 -> 测试设置 -> 取消选中保持测试执行引擎运行。

    这应该允许您同时运行两个引擎。我认为正在发生的事情是,一旦开始,它就会保持不变,并且很难让另一个工作

    关键字:executor://xunit/VsTestRunner2


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!