我知道MSTest不支持RowTest
和类似的测试.
什么是MSTests
用户怎么办?如何在没有RowTest
支持的情况下生活?
我已经看过DataDriven
测试功能,但听起来有太大的开销,是否有任何第三方补丁或工具允许我进行RowTest
类似的测试MSTest
?
[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 }
我知道这是一个迟到的答案,但希望它可以帮助其他人.
我到处寻找一个优雅的解决方案,最后自己写了一个.我们在20多个项目中使用它,进行了数千次单元测试和数十万次迭代.永远不会错过一个节拍.
https://github.com/Thwaitesy/MSTestHacks
1)安装NuGet包.
2)从TestBase继承您的测试类
public class UnitTest1 : TestBase { }
3)创建一个返回IEnumerable的Property,Field或Method
public class UnitTest1 : TestBase { private IEnumerableStuff { get { //This could do anything, get a dynamic list from anywhere.... return new List { 1, 2, 3 }; } } }
4)将MSTest DataSource属性添加到测试方法,指向上面的IEnumerable名称.这需要完全合格.
[DataSource("Namespace.UnitTest1.Stuff")] public void TestMethod1() { var number = this.TestContext.GetRuntimeDataSourceObject(); Assert.IsNotNull(number); }
最终结果: 3次迭代就像普通的DataSource :)
using Microsoft.VisualStudio.TestTools.UnitTesting; using MSTestHacks; namespace Namespace { public class UnitTest1 : TestBase { private IEnumerableStuff { get { //This could do anything, get a dynamic list from anywhere.... return new List { 1, 2, 3 }; } } [DataSource("Namespace.UnitTest1.Stuff")] public void TestMethod1() { var number = this.TestContext.GetRuntimeDataSourceObject (); Assert.IsNotNull(number); } } }
我们在VS2012 Update1中添加了对DataRow的支持.请参阅此博客以获取简介
在VS2012 Update1中,此功能目前仅限于Windows应用商店.在以后的版本中,它不受此限制.