C# 每个数据库行的NUnit测试?

C# 每个数据库行的NUnit测试?,c#,unit-testing,nunit,qa,C#,Unit Testing,Nunit,Qa,编辑:我是NUnit的新手 我不知道这是否可行,但我会继续解释我想做什么 我想创建一个测试夹具,它使用来自数据库的5种不同类型的输入来运行测试 TestFixture Test using input1 Test using input2 Test using input3 Test using input4 Test using input5 通过这种方式,我可以从NUnit GUI中准确地看到哪个输入导致了故障,但我不知道如何做到这一点。目前,我有如

编辑:我是NUnit的新手

我不知道这是否可行,但我会继续解释我想做什么

我想创建一个测试夹具,它使用来自数据库的5种不同类型的输入来运行测试

TestFixture
    Test using input1
    Test using input2
    Test using input3
    Test using input4
    Test using input5
通过这种方式,我可以从NUnit GUI中准确地看到哪个输入导致了故障,但我不知道如何做到这一点。目前,我有如下设置:

[TestFixture]
public class Tester{
    [Test]
    public void RunTest(){
        var inputs = db.inputs.where(a=>a.id < 6).ToList();
        bool testSuccess=true;
        foreach(var input in inputs){
            bool success = RunTheTest(input);
            if(success==false){
                testSuccess=false;
            }
        }
        //Tell NUnit that the entire test failed because one input failed
    }
}

即使RunTest尝试了5个不同的输入,我只知道是否有一个或多个输入失败,但我不知道哪个输入失败了。基本上,我要问的是,是否有可能根据我想从数据库中获取的内容动态创建显示在NUnit GUI中的测试

在foreach循环中,您可以执行
TestFixture
    Test using input1
    Test using input2
    Test using input3
    Test using input4
    Test using input5
Assert.True(成功,字符串.Format(“输入:{0}”,输入))


或者,您可以尝试将sourceType作为具有返回名为sourceName的IEnumerable的方法的帮助器类。此方法的实现应该从DB获取输入值。

查看属性。这将允许您定义另一种方法,在运行时,将为从源方法返回的每个项创建测试用例。

我将RunTestReST视为一个测试,RunTestTest只是一个辅助方法。因此,测试中的第一个断言将使整个测试失败。在单元测试中,您不应将多个测试作为一个测试运行。第一个失败的断言将导致测试结束