我的测试项目包含一组输入数据文件,这些文件被输入到一个传统的第三方软件中。由于这个软件的输入数据文件很难构建(不能有意识地完成),我不打算添加新的输入数据文件。
每个输入数据文件都将受到一组“测试功能”的约束。某些测试函数可以独立调用。其他测试函数表示顺序操作的阶段 - 如果前一阶段失败,则不需要执行后续阶段。
我已经尝试了NUnit参数化测试用例(TestCaseAttribute和TestCaseSourceAttribute),并将数据文件列表作为测试用例传入。我通常对选择输入数据进行测试的能力感到满意。
但是,我想看看是否可以自定义其GUI的树结构,以便“测试功能”成为“输入数据”的子代。例如:
这对于识别在处理特定输入文件期间失败的阶段非常有用。
是否有任何可以启用新树布局的提示和技巧?我是否需要自定义NUnit才能获得此布局?
已编辑:有关分离测试数据和测试代码概念的介绍,请参阅问题Term for unit testing that separates test logic from test result data。在我的情况下,分离是由实际问题驱动的,而不是出于意识形态的原因。我的测试数据文件的来源是“在野外”。
数据驱动测试的其他轶事用法:
答案 0 :(得分:0)
您可能无法像这样完全模拟结构。测试只能存在于TestFixtures(类)中,并且唯一允许您在GUI中嵌套任意级别的是命名空间。
你能做的是:
* File001 (namespace)
* Tests_File001 (class, text fixture)
* CheckFileTypeTest (method, test)
* GetFileTopLevelStructureTest (method, test)
* CompleteProcessTest (namespace)
* TestsCompleteProcessTest (class, text fixture)
* StageOneTest (method, test)
* StageTwoTest (method, test)
* StageThreeTest (method, test)
我假设您目前的设置更多
[Test]
[TestCaseSource("TestFiles")]
public void StageOneTest(String file)
{
}
其中一个测试方法检查特定事物,并为每个文件运行该测试。在这种情况下,您只需删除属性并从新测试中调用此方法。
我也觉得您希望测试按特定顺序执行,不同的测试运行程序以不同的顺序执行测试。我不知道有任何办法这样做,一般来说你不应该这样做。没有测试应该依赖于另一项成功的测试。
假设您的测试有些时间密集,如果“早期”测试已经失败,您不想运行所有“后期”测试,您可以考虑将它们放在适当的类别中,例如:“Preliminary”,“Stage1”然后你可以在另一个之后执行一个类别,看看第一个类别失败的地方。
我希望这会对你有所帮助。