使用Robotium进行Androidtesting注释

我目前正在Android中构build一个应用程序,然后使用Robotium进行functiontesting(顺便说一句,不要在Android 1.6以上使用Robotium,这太BUG了)。

其中一些testing有一个随机的倾向失败,主要是Robotium缺less一个文本字段,或超时,而不是阅读文本。 我正在尝试使用@FlakyTest注释,所以它们将在抛出失败的testing错误之前运行两到三次。 但是,注释不起作用,testing失败后不会重新运行。

以下是我如何使用注释:

 public class ClassName extends ActivityInstrumentationTestCase2<HomeActivity>{ @LargeTest @FlakyTest(tolerance=3) public void testMethod(){ //Here I run my roboitium scripts. } } 

然后我从命令行运行它:

adb shell am instrument -w com.jayway.test / android.test.InstrumentationTestRunner

eclipse和testing的命令行执行都不考虑片状testing注释。 有没有人看到我如何申请@FlakyTest

Related of "使用Robotium进行Androidtesting注释"

我看不到使用@FlakyTest批注的任何问题。

我整理了一个快速testing案例来testing@FlakyTest和Robotium(v2.2):

 public class FlakyTestCase extends ActivityInstrumentationTestCase2<Main> { private static int count = 0; private Solo solo; public FlakyTestCase() { super("com.stackoverflow.example", Main.class); } @Override public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } @LargeTest @FlakyTest(tolerance=3) public void testFlaky(){ Log.e("FlakeyTestCase", "Execution Count:" + ++count); solo.assertCurrentActivity(null,Main.class); solo.clickOnText("Doesn't Exist"); Log.e("FlakeyTestCase", "Shouldn't make it here"); } } 

LogCat显示以下消息:

 Execution Count: 1 Execution Count: 2 Execution Count: 3 

所以@FlakyTest注解肯定被调用。 testing的(最终)失败显示为:

 junit.framework.AssertionFailedError: The text: Doesn't Exist is not found! 

并且"Shouldn't make it here"的消息从未被logging。

所以就我@FlakyTest ,不pipe你如何声明你的注解或者@FlakyTest和Robotium,v2.2的任何问题都没有问题。

也许你的testing代码的另一部分有问题?

一般来说,在编写Androidtesting(有或没有Robotium)时,你必须小心。 你不能只说“这是可见的”。 您需要将所有内容都包裹在“等待”循环中,所以会说“等待这个可见”。 在模拟器中运行时,这是一个特别的问题,因为有时事情会很长,没有任何理由。 没有等待周期,你将永远不会有一致的运行。 我们有几百个testing,我们从来没有需要使用FlakyTest注释。

Robotium缺less一个文本字段,或超时,而不是阅读文本意味着我们必须清楚,如果文本或任何存在于屏幕上,然后只需要执行

 if(solo.searchText("Doesn't Exist", true){ solo.clickOnText("Doesn't Exist"); } 

类似的,如果像button或其他组件,我们可以通过以上逻辑来实现这一点。

添加到您的代码:

 import android.util.Log;