使用Mockito在春季进行单元测试

时间:2013-03-22 06:50:03

标签: java spring mockito

今天在与Mockito和春天合作的时候,我对这个场景很感兴趣,

    public class MyClass {

    private MyService myService;

    int doSomethingElse(String str) {
        .....
        myService.doSomething(str);
        ...
    }
}

public interface MyService {
    String doSomething(String str);
}


public class Class1 {
    private MyClass myClass;

    public Stirng methodToBeTested() {
        myClass.doSomethingElse("..");
    }
}

public class class1Test {

    @Mock
    MyService myService;

    @Resource
    @Spy
    @InjectMocks
    MyClass myClass;

    @Resource
    @InjectMocks
    Class1 class1;

    public void setUPTest() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void methodToBeTestedTest() {
        this.setUPTest();
            ...
            class1.methodToBeTested();
    }

}

这里我想模仿“MyService”。但MyService用于“MyClass”,它用于“Class1”。

我想使用spring初始化“MyClass”和“Class1”。

当我尝试运行此测试时,我得到以下异常

org.mockito.exceptions.base.MockitoException: 不能模拟/间谍类$ Proxy79 Mockito不能嘲笑/间谍:    - 最后的课程    - 匿名课程    - 原始类型

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

您正在测试Class1,它只有MyClass作为依赖项。 MyService与此测试无关。您应该模拟MyClass并测试对doSomethingElse的调用。

如果您希望测试doSomething MyService的来电,则应编写一个MyClassTest,将依赖关系模仿MyService

相关问题