单元测试Android Activity中的方法

时间:2017-09-27 04:32:11

标签: java android unit-testing

我不知道是否已经回答,我发现了一些类似的问题,但答案对我没有任何意义。所以,我再次问它。

我们如何测试活动中的方法。

public class MyActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       //inflate layout        
   }

   public int someMethod() {
       //perform some logic and return an integer
   }

}

我想对方法someMethod进行单元测试,但是我怎么能这样做,因为我无法创建活动的实例并直接调用该方法。测试中的方法不使用任何Android组件,因此我不想使用Roboelectric或任何其他此类库或工具。这是一个简单的java方法。

我知道的一种方法是将方法移动到另一个类并测试该类单元并且我完全没问题,但我想知道这是否正确,(为此目的创建一个单独的类) ),还是有其他办法吗?

感谢您的任何反馈。

1 个答案:

答案 0 :(得分:4)

有点理论,你不想在另一个类中测试一个方法。 继S.O.L.I.D.和D.R.Y.原则,你的班级应承担单一责任。 因此,如果您认为只想测试一个方法,则此方法明显具有另一个责任,而不是其他类。这导致我们:它不应该在那个特定的类中。

单元测试与测试背后的计划一样好(也有价值)。

回答你的问题:是的,你可以打电话给new myActivitiy()并且单元测试可以运行它(至少我认为是这样)。但是,如果该方法使用运行时值/上下文或该活动中的任何其他内容,则不能在不运行Espresso或类似框架的情况下使用。

我建议创建一个可测试的正确对象模型。

单元测试只能测试编写 testable

的代码 欢呼,格里斯