Visual studio 2015 MSTest数据驱动测试未运行所有行

Visual studio 2015 MSTest数据驱动测试未运行所有行,visual-studio-2015,mstest,data-driven-tests,Visual Studio 2015,Mstest,Data Driven Tests,我正在使用VS2015,并在MSTest中编写测试。MSTest似乎并没有在数据驱动测试中运行所有行 例如,这是一个样本测试: //there is a XML datafile that has 1000 "rows", 1 to 1000 int x = Int32.Parse((string)TestContext.DataRow["Payload"]); if (x == 999) throw new Exception(); 当我调试测试时,它正确地在999处失败。但是,当我

我正在使用VS2015,并在MSTest中编写测试。MSTest似乎并没有在数据驱动测试中运行所有行 例如,这是一个样本测试:

//there is a XML datafile that has 1000 "rows", 1 to 1000
int x = Int32.Parse((string)TestContext.DataRow["Payload"]);
if (x == 999)
    throw new Exception();
当我调试测试时,它正确地在999处失败。但是,当我运行测试(而不是调试)时,测试结果(大部分时间)显示测试已通过。测试的详细信息显示,并非所有1000行都进行了测试。 你知道这里发生了什么吗

注意:此问题大多数情况下都会发生。偶尔,测试结果似乎已经运行了所有1000行,并且正确地显示了失败的测试

mcve应要求:

[TestClass]
public class TestDataDriven
{
    private TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }

    [TestMethod]        
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
               "data.xml",
               "Row",
                DataAccessMethod.Sequential)]
    public void TestMethod1()
    {
        int x = Int32.Parse((string)TestContext.DataRow["Payload"]);
        if (x == 999)
            throw new Exception();
    }
}
确保在生成位置中有此格式的xml文件

<?xml version="1.0" encoding="utf-8"?>
<Iterations>
  <Row>
    <Payload>1</Payload>
  </Row>
  <Row>
    <Payload>2</Payload>
  </Row>
.
.
.
  <Row>
    <Payload>1000</Payload>
  </Row>
</Iterations>

1.
2.
.
.
.
1000
注意:如果您愿意这样做,您可以从NuGet获得MSTestHacks,那么下面的代码比较简单,因为您不需要生成数据文件

namespace Namespace
{
    [TestClass]
    public class TestDataDriven : TestBase
    {
        List<int> _source = new List<int>( Enumerable.Range(1,1000));
        public List<int> Source
        {
            get { return _source; }
            set { _source = value; }
        }

        [TestMethod]
        [DataSource("Namespace.TestDataDriven.Source")]
        public void TestMethod1()
        {
            var x = TestContext.GetRuntimeDataSourceObject<int>();
            if (x == 999)
                throw new Exception();
        }
    }
}
名称空间
{
[测试类]
公共类TestDataDriven:TestBase
{
列表_source=新列表(可枚举范围(11000));
公共列表源
{
获取{return\u source;}
设置{u source=value;}
}
[测试方法]
[数据源(“Namespace.TestDataDriven.Source”)]
公共void TestMethod1()
{
var x=TestContext.GetRuntimeDataSourceObject();
如果(x==999)
抛出新异常();
}
}
}
提前感谢

三年后。。。。 解决方案切换到xunit。我得出的结论是mstest很烂
见鬼,微软自己也在内部使用xunit,所以这里有一个问题

你有吗?我刚刚添加了一个mcve。无论是mstest iteslf还是mstesthacks,我仍然存在这个问题我在sql Server上遇到了同样的问题我也遇到了同样的问题。有人能解决这个问题吗?XUnit不允许用不同的数据集并行运行相同的理论,这从本质上防止了数据驱动测试。