代码之家  ›  专栏  ›  技术社区  ›  Ezio

单元测试安卓活动中的方法

  •  5
  • Ezio  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  6
  •   Grisgram    7 年前

    从理论上讲,您不想在另一个类中测试单个方法。 遵循S.O.L.I.D.和D.R.Y.原则,您的课程应承担单一责任。 所以如果你认为你只想测试一种方法,这个方法显然有 比班上其他人更负责任。这让我们想到:它不应该在那个特定的类中。

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

    new myActivitiy() 单元测试可能会运行它(至少我这么认为)。但是,如果该方法使用运行时值/上下文或该活动中的任何其他内容,那么在没有运行Espresso或类似框架的情况下就无法实现。

    我建议创建一个合适的可测试对象模型。

    可测试

    干杯,格里斯