C# 每个数据库行的NUnit测试?
编辑:我是NUnit的新手 我不知道这是否可行,但我会继续解释我想做什么 我想创建一个测试夹具,它使用来自数据库的5种不同类型的输入来运行测试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中准确地看到哪个输入导致了故障,但我不知道如何做到这一点。目前,我有如
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只是一个辅助方法。因此,测试中的第一个断言将使整个测试失败。在单元测试中,您不应将多个测试作为一个测试运行。第一个失败的断言将导致测试结束