我有五个不同的测试数据,并在循环(五次)中运行(相同)JUnit测试。也就是说,在每次循环迭代时,将从JSON文件中读取新的测试输入数据,并且将运行测试,该测试基本上执行AsertEquals。在循环中运行Junit测试,如果两者之间出现故障,则继续进一步操作
我非常清楚JUnit参数化最适合这种情况,但是现在我必须坚持使用循环中的不同测试数据运行测试。
我的测试基本上是这样的:
for (int i = 0; i < tests.length; i++) {
int test = tests[i];
logger.info("---------------------------------------------------------------------------------------------------------------------------------------------------" +
"--------------------------------------------------------------------------------------------------------------------------------------------------------");
logger.info("Executing Test: " + tests[i]);
logger.info("Json file for Test " + tests[i] + " is " + file);
logger.info("---------------------------------------------------------------------------------------------------------------------------------------------------" +
"--------------------------------------------------------------------------------------------------------------------------------------------------------");
FileReader fr = new FileReader(file);
kparams = readKernelParameters.readJsonFile(fr);
setUpMatrices();
setUpKernel();
setUpPSM();
if (!setUpFailure) {
logTestConfiguration();
if (logPsmOutput) {
File testFile = getPSMFileOutput();
write(testFile, Matrix.transpose(velocity));
}
if (testsToBeRun[i] == 5) {
Assert.assertNotEquals("Running PSM Check " + tests[i] + ": ", 0f, (double) Matrix.diff(vOut, velocity, quality)[6], 1.0f);
//here I want to check if above Assert.assertNotEquals was successful, if yes //then I would like to write in log file
} else {
Assert.assertEquals("Running PSM Check " + tests[i] + ": ", 0f, (double) Matrix.diff(vOut, velocity, quality)[6], 1.0f);
//same here
}
} else {
Log.error("Failure in test setup");
Assert.fail("Failure in test setup");
}
}
现在我以下的问题:
1)如何检查是否Assert.asserEquals和Assert.assertNotEquals是成功的?因为他们返回无效,我不能写入他们在条件。有没有其他方法可以检查它?
2)目前,如果一次测试失败,例如,测试-2,那么它不会进一步运行循环并退出。而我想进一步迭代并运行进一步的测试。
我知道我的这个场景的循环可能不是很好,但我想知道我是否能够实现我想要的。
你正在尝试做太多的测试。单元测试应该很简单,只包含一个专门的案例场景。如果你在你的测试中有条件陈述..有什么不对的 –