Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于Mockito的spring单元测试_Java_Spring_Mockito - Fatal编程技术网

Java 基于Mockito的spring单元测试

Java 基于Mockito的spring单元测试,java,spring,mockito,Java,Spring,Mockito,今天在与Mockito和spring合作时,我被这个场景打动了 public class MyClass { private MyService myService; int doSomethingElse(String str) { ..... myService.doSomething(str); ... } } public interface MyService { String doSomet

今天在与Mockito和spring合作时,我被这个场景打动了

    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无法模拟/监视以下内容: -期末班 -匿名类 -基本类型


有人能帮我吗?

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


如果您希望测试对
MyService
doSomething
的调用,您应该编写一个
MyClassTest
,它模拟对
MyService

的依赖关系,Class1不使用该服务。Class1的直接依赖项是MyClass。这是您应该模拟以测试Class1的类。然后为了测试MyClass,你会嘲笑MyService。谢谢你的回复。让我更详细地说,“MyService”是一个外部web服务,我想在我的项目中模拟对该服务的所有调用。此外,Mockito抛出的异常不应该出现在您提供的代码中。也许如果您可以发布原始代码,我们可以看到导致异常的原因。我在上述场景中使用SpringMVC。所以它有一个接口和它的impl。我尝试在Class1中模拟MyClass,因为我想使用spring初始化“@InjectMocks”和“@Resource”在同一个变量上不起作用。Spring首先使用“@Resource”初始化,然后“@InjectMocks”不会将任何mock注入到类1中。如果我将spring与mockito一起使用,会有任何问题吗?