使用Robotium的Android测试注释
我目前正在Android上构建一个应用程序,并使用Robotium进行功能测试(顺便说一句,不要在Android 1.6之外的任何东西上使用Robotium,这太麻烦了) 其中一些测试有随机失败的倾向,主要是Robotium缺少文本字段,或者超时,而不是阅读文本。我正在尝试使用使用Robotium的Android测试注释,android,robotium,Android,Robotium,我目前正在Android上构建一个应用程序,并使用Robotium进行功能测试(顺便说一句,不要在Android 1.6之外的任何东西上使用Robotium,这太麻烦了) 其中一些测试有随机失败的倾向,主要是Robotium缺少文本字段,或者超时,而不是阅读文本。我正在尝试使用@FlakyTest注释,因此在抛出失败的测试错误之前,它们将运行两三次。但是,注释不起作用,失败后测试不会重新运行 以下是我如何使用注释: public class ClassName extends ActivityI
@FlakyTest
注释,因此在抛出失败的测试错误之前,它们将运行两三次。但是,注释不起作用,失败后测试不会重新运行
以下是我如何使用注释:
public class ClassName extends ActivityInstrumentationTestCase2<HomeActivity>{
@LargeTest
@FlakyTest(tolerance=3)
public void testMethod(){
//Here I run my roboitium scripts.
}
}
公共类类名扩展了ActivityInstrumentationTestCase2{
@最大的
@剥落试验(公差=3)
公共void testMethod(){
//在这里,我运行我的roboitium脚本。
}
}
然后我从命令行运行它:
adb shell am instrument-w com.jayway.test/android.test.InstrumentationTestRunner
eclipse和测试的命令行执行都没有考虑脆弱的测试注释。是否有人看到我尝试应用
@FlakyTest
时出现错误?我看不出您使用@FlakyTest
注释有任何问题
我准备了一个快速测试用例来测试@FlakyTest和Robotium(v2.2):
因此,@FlakyTest
注释肯定被调用了。试验的(最终)失败如下所示:
junit.framework.AssertionFailedError: The text: Doesn't Exist is not found!
而且消息“不应该出现在这里”
从未被记录
因此,就我所见,您如何声明注释,以及@FlakyTest
和Robotium v2.2的任何问题都没有问题
也许测试代码的另一部分有问题?将此添加到代码中:
import android.util.Log;
一般来说,在为Android编写测试时(有或没有Robotium),您必须更加小心。你不能只说“这是可见的”。您需要将所有内容包装在一个“等待”循环中,所以您可以说“等待它可见”。在模拟器中运行时,这是一个特别的问题,因为有时事情需要很长时间,而没有任何好的理由。如果没有等待周期,您将永远不会有一致的运行。我们有几百个测试,我们从来不需要使用FlakyTest注释。Robotium缺少文本字段,或者超时,不阅读文本意味着 我们必须清楚地检查屏幕上是否存在文本或任何内容,然后只需要执行以下操作
if(solo.searchText("Doesn't Exist", true){
solo.clickOnText("Doesn't Exist");
}
类似于button或其他组件,我们可以通过上述逻辑实现这一点。您可能希望在robotium邮件列表中询问此问题。您应该使用最新版本的robotium(5.1)
import android.util.Log;
if(solo.searchText("Doesn't Exist", true){
solo.clickOnText("Doesn't Exist");
}