当前位置:  开发笔记 > 小程序 > 正文

如何使用MSTest进行RowTest?

如何解决《如何使用MSTest进行RowTest?》经验,为你挑选了3个好方法。

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

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

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



1> Tormod..:
[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
}


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

2> Thwaitesy..:

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

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

https://github.com/Thwaitesy/MSTestHacks

1)安装NuGet包.

2)从TestBase继承您的测试类

public class UnitTest1 : TestBase
{ }

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

public class UnitTest1 : TestBase
{
    private IEnumerable Stuff
    {
        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 IEnumerable Stuff
        {
            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);
        }
    }
}



3> allen..:

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

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


为什么它受限于Windows商店应用程序?是否可以很快用于常规测试项目?
xUnit已经有这么久了.这是一种常见的情况,为什么只能为Windows应用商店应用启用?这没有道理.
@allen明白了.在创建MSTest的公司内部工作比在外面更令人大开眼界.有趣的是,我建议使用xUnit.net而不是MSTest.
它现在可用于所有平台,而不仅仅是Windows应用商店应用程序.
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有