如何使用MSTest进行RowTest?

dr.*_*vil 42 unit-testing mstest data-driven-tests rowtest

我知道MSTest不支持RowTest和类似的测试.

什么是MSTests用户怎么办?如何在没有RowTest支持的情况下生活?

我已经看过DataDriven测试功能,但听起来有太大的开销,是否有任何第三方补丁或工具允许我进行RowTest类似的测试MSTest

Tor*_*mod 38

[TestMethod]
Test1Row1
{
    Test1(1,4,5);
}

[TestMethod]
Test1Row2
{
    Test1(1,7,8);
}

private Test1(int i, int j, int k)
{
   //all code and assertions in here
}
Run Code Online (Sandbox Code Playgroud)

  • 这是我使用的方法,它还允许您为每个"行"提供一个单独的,有希望描述性的名称. (2认同)

Thw*_*esy 7

我知道这是一个迟到的答案,但希望它可以帮助其他人.

我到处寻找一个优雅的解决方案,最后自己写了一个.我们在20多个项目中使用它,进行了数千次单元测试和数十万次迭代.永远不会错过一个节拍.

https://github.com/Thwaitesy/MSTestHacks

1)安装NuGet包.

2)从TestBase继承您的测试类

public class UnitTest1 : TestBase
{ }
Run Code Online (Sandbox Code Playgroud)

3)创建一个返回IEnumerable的Property,Field或Method

public class UnitTest1 : TestBase
{
    private IEnumerable<int> Stuff
    {
        get
        {
            //This could do anything, get a dynamic list from anywhere....
            return new List<int> { 1, 2, 3 };
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

4)将MSTest DataSource属性添加到测试方法,指向上面的IEnumerable名称.这需要完全合格.

[DataSource("Namespace.UnitTest1.Stuff")]
public void TestMethod1()
{
    var number = this.TestContext.GetRuntimeDataSourceObject<int>();

    Assert.IsNotNull(number);
}
Run Code Online (Sandbox Code Playgroud)

最终结果: 3次迭代就像普通的DataSource :)

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestHacks;

namespace Namespace
{
    public class UnitTest1 : TestBase
    {
        private IEnumerable<int> Stuff
        {
            get
            {
                //This could do anything, get a dynamic list from anywhere....
                return new List<int> { 1, 2, 3 };
            }
        }

        [DataSource("Namespace.UnitTest1.Stuff")]
        public void TestMethod1()
        {
            var number = this.TestContext.GetRuntimeDataSourceObject<int>();

            Assert.IsNotNull(number);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


all*_*len 6

我们在VS2012 Update1中添加了对DataRow的支持.请参阅此博客以获取简介

在VS2012 Update1中,此功能目前仅限于Windows应用商店.在以后的版本中,它不受此限制.

  • 为什么它受限于Windows商店应用程序?是否可以很快用于常规测试项目? (8认同)
  • xUnit已经有这么久了.这是一种常见的情况,为什么只能为Windows应用商店应用启用?这没有道理. (2认同)
  • @allen明白了.在创建MSTest的公司内部工作比在外面更令人大开眼界.有趣的是,我建议使用xUnit.net而不是MSTest. (2认同)
  • 它现在可用于所有平台,而不仅仅是Windows应用商店应用程序. (2认同)