每个数据库行的NUnit测试
本文关键字:NUnit 测试 数据库 | 更新日期: 2023-09-27 17:58:27
我不知道这是否可能,但我会继续解释我试图做什么。
我想创建一个测试夹具,它使用来自数据库的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
}
}
在这种情况下,在NUnit中,我看到:
Tester
RunTest
即使RunTest尝试了5个不同的输入,我也只知道是否有一个或多个输入失败,但我不知道哪个输入失败了。基本上,我想问的是,是否可以根据我想从数据库中获取的内容动态创建显示在NUnit GUI中的测试。
查看TestCaseSource属性。这将允许您定义另一个方法,该方法将在运行时为源方法返回的每个项创建测试用例。
在foreach循环中,您可以执行Assert.True( success, string.Format("Input: {0}", input ))
;
或者,您可以尝试ValueSourceAttribute,其中sourceType是一个辅助类,该类具有返回名为sourceName的IEnumerable的方法。该方法的实现应该从DB中获取输入值。