任何人都可以帮我解决问题吗?
我在Junit用Robotium测试我的程序。
我的问题是:
当我检测到junit中出现故障时,如何使用代码检测程序中是否存在故障?那么,如果没有错误发生,我可以继续运行吗?例如如果没有错误,继续测试,否则退出。
答案 0 :(得分:1)
当我检测到junit中出现故障时,如何使用代码检测程序中是否存在故障?那么,如果没有错误发生,我可以继续运行吗?例如如果没有错误,继续测试,否则退出。
这没有多大意义。如果您在JUnit测试中失败,意味着,您的程序就会出现故障。如果没有发生故障,单元测试将自动进入下一个测试。
但也许你在问你是否可以这样做:
// in some unit test
assert(....); // <<--- this test fails:
// Do something so that the unit test will continue to the next assertion ...
assert(....)
答案是你不能以任何有用的方式做到这一点:
单元测试框架只能通过终止异常来报告单元测试失败,表明它们已经失败。
你可以编写一个单元测试来捕获assert(...)
或fail(...)
调用抛出的异常并继续下一个断言。但这会破坏先前单元测试失败的所有证据。
因此,如果您希望能够在第一个断言失败的情况下执行第二个断言,则需要将它们设为单独的测试用例。
您可能还在询问是否有办法让JUnit测试运行器在第一次失败的单元测试时中止。答案是肯定的,这是可能的,但你如何做到这将取决于你正在使用的测试运行器。
答案 1 :(得分:1)
我建议使用Java的内置断言进行测试。要创建一个断言:
assert someBoolean : message;
例如:
assert (myValue == 3) : "myValue was " + myValue + ", should have been 3";
运行程序时默认禁用断言。要使用断言运行程序,请按以下方式运行:
java -enableassertions MyClass
然后,如果您的程序使用此运行时选项运行,则无论何时达到断言,都会发生以下情况:
例如:
int myVar = 5;
assert (myVar == 3) : "myVar is " + myVar + " not 3";
结果
Exception in thread "main" java.lang.AssertionError: myVar is 5 not 3
如果启用了断言。 请记住:所有这一切只有在您使用-enableassertions
或-ea
启用断言时才会发生。如果不这样做,则跳过断言。
答案 2 :(得分:0)
您可以将条件的断言设为真或假 -
assertTrue(soloObject.waitForActivity("Activity Name"));
您可以使用robotium提供的所有方法来制作示例isTextFound("text")
,isTextFound("text")
,isCheckBoxChecked(index)
等