junit 如何创建一个没有默认构造函数的模拟对象?

7xzttuei  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(128)

我正在使用powermockito开发Junit。
我有如下的示例代码:

class A {
    private B b;

    A() {
        b = new B("Test");
    }

    public void invokeAnotherClassMethod() {
        String busineeslogic = b.myLogic();
        System.out.println("apply some logic again on this response ");
    }
}
class B {
    private String text;

    B(String text) {
        this.text=text;
    }

    public String myLogic() {
        System.out.println("Need to apply some business logic");
        return "businessResponse";
    }
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
class ATest {

    @Before
    void setup() {
        B b = mock(B.class);
    }

    @Test
    public void mytestcase() {

    }
}

我正在为Class A编写Junit,并试图在我的测试用例中模拟Class B对象,它抛出了错误,我不知道如何为Class B创建模拟对象。
有人能指导我,如何为类B创建模拟对象,并在执行测试用例时在类A中使用它吗?

v9tzhpje

v9tzhpje1#

你需要在你的测试中或在测试类的字段中创建mock,比如:

@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
class ATest {

@Mock
private B b;

    @Test
    public void mytestcase() {
    when(b.myLogic()).thenReturn(anyString());
    }
}

@RunWith(PowerMockRunner.class)
@PrepareForTest(B.class)
class ATest {

    @Test
    public void mytestcase() {
    B b = mock(B.class);
    when(b.myLogic()).thenReturn(anyString());
    }

}

相关问题