0

谁能帮我解决我的问题?
我在 Junit 中使用 Robotium 测试我的程序。

我的问题是:

当我检测到junit有故障时,如何使用代码检测程序有故障?那么,如果没有发生错误,我可以继续运行吗?例如,如果没有错误,继续测试,否则退出。

4

3 回答 3

1

我建议使用 Java 的内置断言进行测试。创建断言:

assert someBoolean : message;

例如:

assert (myValue == 3) : "myValue was " + myValue + ", should have been 3";

运行程序时,默认情况下禁用断言。要使用断言运行您的程序,请像这样运行它:

java -enableassertions MyClass

然后,如果您的程序使用此运行时选项运行,则无论何时达到断言,都会发生以下情况:

  1. 如果布尔值为真,程序将继续。
  2. 如果为 false,则抛出带有指定消息的 AssertionError。

例如:

int myVar = 5;
assert (myVar == 3) : "myVar is " + myVar + " not 3";

结果是

Exception in thread "main" java.lang.AssertionError: myVar is 5 not 3

IF 断言已启用。请记住-enableassertions:所有这些仅在您使用or启用断言时才会发生-ea。如果你不这样做,断言将被跳过。

于 2013-04-28T05:11:40.020 回答
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(...)orfail(...)调用引发的异常并继续下一个断言。但这会破坏之前单元测试失败的所有证据。

因此,如果您希望能够在第一个断言失败的情况下执行第二个断言,则需要将它们设为单独的测试用例。


您可能还会问是否有办法让 JUnit 测试运行器在第一次失败的单元测试时中止。答案是肯定的,这是可能的,但你将如何做到这一点取决于你正在使用的测试运行器。

于 2013-04-28T05:04:43.760 回答
0

您可以断言条件为真或假-

assertTrue(soloObject.waitForActivity("Activity Name"));

您可以使用 robotium 提供的所有方法来进行断言,而不是等待活动,例如isTextFound("text")isTextFound("text")isCheckBoxChecked(index)等。

于 2013-04-28T05:42:12.077 回答