我在制作Android应用程序方面有相当多的经验。对于我的新项目,我们决定做测试驱动开发(TDD)。我一直在使用Robotium进行用户场景测试,它工作得很好,看起来也很容易。
对于单元测试,我尝试使用(MockContext Android Class)模拟上下文,但我无法这样做。我浏览了这个博客http://sites.google.com/site/androiddevtesting/和这个http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html,它表明在Android应用程序中模仿仍然是非常有限和困难的,并建议使用PowerMock,jMockit,JeasyTest,或Roboelectric (与Mockito和Maven结合使用),甚至RoboGuice。
我想从你们那里得到任何建议,在你们看来哪个单元测试框架是测试Android应用程序最好的。(特别是测试Android类,可能会提供模拟上下文和其他模拟功能,以便我可以使我的测试用例尽可能独立)。任何建议或指示都会很有帮助。谢谢
发布于 2011-06-13 03:43:42
对于设备外测试,请查看Robolectric
要进行设备上的测试,请查看Borachio
底线:要做好这件事仍然非常非常困难。情况正在改善(今天的情况比6个月前好了很多),但Android是我写过的程序中最不友好的测试环境。
发布于 2014-05-02 04:24:17
为了在Android中进行TDD,我个人使用了以下所有工具:
另外:使用依赖注入库,如Dagger或Roboguice,将大大简化您的单元/集成测试。要在多个设备上运行测试,请考虑使用Spoon。
发布于 2012-08-23 03:07:53
下面给出了一个示例。当您单击按钮时,该活动将显示Hello World -
public class HelloWorldActivityTest extends
ActivityInstrumentationTestCase2<HelloWorldActivity> {
private HelloWorld activity;
public HelloWorldActivityTest() {
super(HelloWorldActivityTest.class);
}
public void testShouldRenderGreetingOnButtonClick() {
activity = this.getActivity();
Button button = (Button) activity.findViewById(R.id.btn_greet);
TouchUtils.clickView(this, button);
assertEquals("Hello World!",
((TextView) activity.findViewById(android.R.id.greeting_text))
.getText());
}
}
编辑:自从我发布答案以来,的情况发生了变化。Mockito现在对Android有相当好的支持。为了进行测试,我们已经从ActivityInstrumentationTestCase2迁移到了Robolectric,只是为了在开发阶段利用JVM虚拟机的超快速度。Android测试框架非常适合集成和功能测试,但不适用于单元测试。
https://stackoverflow.com/questions/6261504
复制相似问题