2012-12-26 48 views
0

每次测试执行后junit进入下一个测试。活动在每次测试执行后自动关闭。测试执行后冻结android junit测试

它可以当我测试功能,但不是当我测试视图。我想在junit执行下一个测试之前在屏幕上看到执行结果。

所以,我想在测试之间做出很小的延迟。


有一个方法可以让我做到这一点:

public void testMyView() throws InterruptedException { 
    getActivity().runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      // viewOperations... 
     } 
    }); 
    Thread.sleep(3000); 
} 

但我不喜欢这种方式,因为这个代码是脏的(尤其是当我有很多这样的测试)。


另一种方式似乎更好:

@UiThreadTest 
public void testHandleEmptyAlphabetList() throws InterruptedException { 
// view operations 
    Thread.sleep(3000); 
} 

但是:它会阻塞UI线程,但没有测试线程。我需要阻止一个测试线程。

有没有什么办法可以在测试线程中单独运行Thread.sleep(3000);


那么,什么是测试之间的线程延迟的最佳方式是什么?

p.s.请不要推荐我额外的测试框架,我想用嵌入工具解决我的问题。谢谢。

+0

尝试覆盖tearDown()方法并将'Thread.sleep(3000);'放在这里。 – yorkw

回答

-1

我建议放弃这种繁琐的单元测试方式,并使用Robolectric,这样你的测试运行在JVM中,你不必处理所有这些令人讨厌的设置。您会惊喜地发现View测试的运行速度,并且您不需要运行模拟器!

+0

谢谢,我知道Robolectric。但正如我所提到的,我想要纯粹的android和junit方式 – pleerock

-1

尝试使用Robotium进行需要真正Android运行的测试。

solo = new Solo(getInstrumentation(), getActivity()); 
[...] 
if (failure) { 
    solo.takeScreenshot(); 
} 

这将截图保存到SD卡(需要WRITE_EXTERNAL_STORAGE许可)

或者,如果你不喜欢使用另一个测试框架(虽然我建议你看一看吧),只是偷在那里使用截图的代码