MSTest的数据驱动的测试没有运行的所有行

问题描述 投票:0回答:1

我使用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>

注意:如果你愿意的话,你可以得到的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();
        }
    }
}

提前致谢

visual-studio-2015 mstest data-driven-tests
1个回答
0
投票

三年....解决方案?切换到的xUnit。我走到那MSTEST吸哎呀MS本身使用的xUnit内部的结论,所以有这

© www.soinside.com 2019 - 2024. All rights reserved.