不知道有没有人回答,我发现了一些类似的问题,但答案对我来说没有任何意义。所以,我再问一遍。
我们如何测试 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/