Ezi*_*zio 4 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
}
}
Run Code Online (Sandbox Code Playgroud)
我想对该方法进行单元测试,someMethod但是我该怎么做,因为我无法创建活动的实例并直接调用该方法。被测方法不使用任何 android 组件,所以我不想使用 Roboelectric 或任何其他此类库或工具。这是一个普通的java方法。
我知道的一种方法是将方法移到另一个类并对该类进行单元测试,我对此非常满意,但我想知道这是否是正确的方法(为此目的创建一个单独的类),或者有没有其他方法可以做到?
感谢您的任何反馈。
稍微深入一下理论,您不想在另一个类中测试单个方法。遵循 SOLID 和 DRY 原则,您的类应承担单一职责。所以如果你认为你只想测试一个方法,这个方法显然比类的其余部分有另一个责任。这导致我们:它不应该在那个特定的类中。
单元测试与测试背后的计划一样好(和一样有价值)。
回答您的问题:是的,您可以调用 anew myActivitiy()并且单元测试可能会运行它(至少我是这么认为的)。但是,如果该方法使用运行时值/上下文或来自该活动的任何其他内容,则不能不运行 Espresso 或类似框架。
我建议创建一个合适的可测试的对象模型。
单元测试只能测试编写可测试的代码
干杯,格里斯