java - 对 Android Activity 中的方法进行单元测试

标签 java android unit-testing

不知道有没有人回答,我发现了一些类似的问题,但答案对我来说没有任何意义。所以,我再问一遍。

我们如何测试 Activity 中的方法。

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

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

}

我想对方法 someMethod 进行单元测试,但我该怎么做,因为我无法创建 Activity 的实例并直接调用该方法。被测方法不使用任何 android 组件,所以我不想使用 Roboelectric 或任何其他此类库或工具。这是一个普通的 Java 方法。

我知道的一种方法是将该方法移动到另一个类并对该类进行单元测试,我对此非常满意,但我想知道这是否是正确的方法,(为此目的创建一个单独的类), 或者还有其他方法吗?

感谢您的任何反馈。

最佳答案

从理论上讲,您不想在另一个类中测试单个方法。 继 S.O.L.I.D.和 D.R.Y.原则,你的类(class)应该有单一的责任。 因此,如果您认为只想测试一个方法,那么这个方法显然比类的其余部分具有另一个责任。这导致我们:它不应该在那个特定的类中。

单元测试的好坏(和值(value))取决于测试背后的计划。

回答您的问题:是的,您可以调用 new myActivitiy() 并且单元测试可能会运行它(至少我是这么认为的)。但是,如果该方法使用运行时值/上下文或该 Activity 中的任何其他内容,则不能不运行 Espresso 或类似框架。

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

单元测试只能测试编写的代码可测试

干杯,格里斯

关于java - 对 Android Activity 中的方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46439558/

相关文章:

java - Android 中的后退按钮就像 Gmail 应用程序中的后退按钮吗?

android - 使用 Open Street Map 在错误的地理点显示覆盖

android - 如何在进度条中制作两种颜色的圆角矩形?

c# - 自动夹具和 AutoMoq : Overriding object generation behavior

java - jfreechart - 删除图表中的空格

java - 如何退出 javafx 中的时间线?

java - 使用 String 嵌套 for 循环

PHPUnit 类无法找到自身

java - 如何防止 Spring 在模拟中注入(inject) @Autowired 引用?

java - tomcat 7上单线程挂起