man*_*hou 3 java jmockit junit4
我在使用jmockit时遇到了以下问题。
我有一个抽象类,它还有许多具体(非抽象)实例方法,现在我想编写一个 JUnit4 测试用例来验证抽象类的一个非抽象和实例方法,但模拟类中的所有其他方法?
例如:
public class abstract Animal {
public abstract void abstractMethod1();
......
public abstract void abstractMethodN();
public void method1() {
System.out.println("Do something1 ...");
}
public void method2() {
System.out.println("Do something2 ...");
}
......
public void methodN() {
method1();
method2();
System.out.println("Do somethingN ...");
}
}
Run Code Online (Sandbox Code Playgroud)
对于这个定义的类,我想编写一个 JUnit4 测试用例来仅验证 methodN 中的逻辑,所以我想模拟整个类。(对于method1和method2,mock或者不mock都可以。)怎么办?
有两种方法:
public class AnimalTest
{
// Both tested and (partially) mocked:
@Tested @Mocked Animal animal;
@Test
public void testMethodNWhileMockingMethods1And2()
{
// Recorded methods will be mocked:
new Expectations() {{
animal.method1();
animal.method2();
}};
// Methods not recorded execute normally.
animal.methodN();
}
@Test
public void testMethodNWhileExecutingMethods1And2AndAlsoVerifyingTheyWereCalled()
{
animal.methodN();
// Executed methods can still be verified:
new Verifications() {{
animal.method1();
animal.method2();
}};
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,验证实际执行的方法虽然可能,但可能不是一个好主意;最好通过更常用的方式来验证这些方法的作用。
| 归档时间: |
|
| 查看次数: |
4424 次 |
| 最近记录: |