Android和移动设备的TDD

Android和移动设备的TDD,android,architecture,tdd,agile,Android,Architecture,Tdd,Agile,我正在探索在Android上推动TDD的实现,我发现很难证明这一点。虽然我坚信TDD,并在其他设计中使用过它,但我面临着几个关键问题: 模拟器速度慢且不可靠。感觉有必要在设备上测试以获得良好的信息 在设备上进行测试通常太慢,无法在编写基本代码片段和单个测试用例之间交替进行 我正在试验另一种方法,编写一个完整的单元测试套件,编写一个代码单元,并且(如果必要的话)编辑测试套件以获得单元的完整覆盖 我的主要问题是:您在移动领域使用了哪些TDD方法/修改,您是否发现它们有效地工作 尽管这并不是问题的

我正在探索在Android上推动TDD的实现,我发现很难证明这一点。虽然我坚信TDD,并在其他设计中使用过它,但我面临着几个关键问题:

  • 模拟器速度慢且不可靠。感觉有必要在设备上测试以获得良好的信息

  • 在设备上进行测试通常太慢,无法在编写基本代码片段和单个测试用例之间交替进行

我正在试验另一种方法,编写一个完整的单元测试套件,编写一个代码单元,并且(如果必要的话)编辑测试套件以获得单元的完整覆盖

我的主要问题是:您在移动领域使用了哪些TDD方法/修改,您是否发现它们有效地工作

尽管这并不是问题的主要动力,但您可以随意加入任何推荐的框架,因为其他地方都有很好的答案。

看看这个项目。它使您能够在仿真器之外运行测试,因此它的目的是使Android TDD实用化


我还将尝试将不依赖Android的代码分离到一个可以独立测试的库/项目中。

请查看完整的源代码。

后续:您认为RoboeElectric有多可靠?我们离开仿真器的部分原因是速度,RoboElectric解决了这个问题,但部分原因是仿真器经常给出错误的行为。所描述的在所有android方法中返回null的方法将给我们提供相当差的覆盖率,因为框架的大部分用于原生android行为。100%同意非Android依赖的代码,尽管我发现到目前为止这是一个罕见的现象,但我们已经不再将Java作为web堆栈的一部分。这是一个非常好的问题,您可能希望将其作为一个单独的组件来启动。我还没有广泛地使用RoboElectric来给你一个好的答案,但与标准的Android测试方法相比,我对它感到非常满意。你也可能会发现他们的谷歌群很有用:。至于非依赖Android的代码,我指的是Android应用程序中使用的代码,而不是系统的其他部分(只是想澄清一下)。祝你好运非常感谢你的帮助。