gpt4 book ai didi

java - 在 spring 中使用 Mockito 注释

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:05 25 4
gpt4 key购买 nike

我在我的应用程序中使用 spring,我想为我的所有类编写单元测试。我从我的应用程序调用了几个外部网络服务,我想使用 Mockito 模拟它们,因为我只想测试我的功能。

假设我有以下场景

这是我的网络服务界面

public interface MyWebService {
public String getSomeData(int id);
}

我是这样使用上面的服务的

public interface MyService {
int doSomethingElse(String str);
}

public class MyServiceImpl implements MyService {

private MyWebService myWebService;

int doSomethingElse(String str) {
.....
myWebService.getSomeData(id);
...
}
}

public interface MyService1 {
Stirng methodToBeTested();
}


public class Class1 implements MyService1{
@Resource
private MyService myService;

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

我写了如下的 uint 测试用例。我在这里监视 MyService 以便运行单元测试。

public class class1Test {

@Spy
MyService myService;

@Resource
@InjectMocks
Class1 class1;

public void setUPTest() {
MockitoAnnotations.initMocks(this);
Mockito.doReturn(123).when(myService).doSomethingElse("someString");
}

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

}

当我运行测试时,我看到的是,我从 web 服务中获取了我在 stub 时提到的值。

谁能帮我解决这个问题?

最佳答案

我通过使用 spring java config 解决了这个问题。我在我的测试配置文件中扩展了我的默认配置文件。

    @Configuration
public class TestConfig extends DefaultConfig {

@Bean
public MyService myService() {
return Mockito.spy(new MyServiceImpl());
}
}

现在我的测试课是这样的

public class class1Test {

@Resource
MyService myService;

@Resource
Class1 class1;

public void setUPTest() {
MockitoAnnotations.initMocks(this);
Mockito.doReturn(123).when(myService).doSomethingElse("someString");
}

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

}

关于java - 在 spring 中使用 Mockito 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com