junit InjectMocks 带构造参数
时间: 2023-10-20 18:06:01 浏览: 313
您好!对于使用 JUnit 和 Mockito 进行单元测试时,如果要使用 `@InjectMocks` 注解来实例化目标类,并且目标类的构造函数带有参数,可以按照以下步骤进行操作:
1. 在测试类中声明一个使用 `@InjectMocks` 注解的目标类对象。例如:
```java
@RunWith(MockitoJUnitRunner.class)
public class MyUnitTest {
@InjectMocks
private MyService myService;
// ...
}
```
2. 在目标类的构造函数参数上使用 `@Mock` 或 `@Spy` 注解来创建和注入依赖的模拟对象或部分模拟对象。例如:
```java
public class MyService {
private MyDependency myDependency;
public MyService(MyDependency myDependency) {
this.myDependency = myDependency;
}
// ...
}
```
3. 在测试方法或测试类的 `setUp` 方法中初始化模拟对象。例如:
```java
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
```
4. 如果需要,使用 Mockito 的 `when` 和 `thenReturn` 方法来指定模拟对象的行为。例如:
```java
@Test
public void testMyMethod() {
// 模拟依赖对象的方法调用返回指定值
when(myDependency.someMethod()).thenReturn("mocked value");
// 执行目标类的方法
String result = myService.myMethod();
// ...
}
```
这样,使用 `@InjectMocks` 注解的目标类对象就会在测试中被正确地初始化并注入带有构造参数的依赖对象。希望对您有帮助!如果您有任何其他问题,请随时提问。
阅读全文