【发布时间】:2023-04-04 01:26:01
【问题描述】:
我正在尝试使用没有 @InjectMocks 注释的 JUnit 测试来测试一个类(及其方法)。注释对我不起作用,因为我尝试测试的类具有 @InjectMocks 不会创建的类属性。
这是我的函数类的样子: (文件路径:src/main/java/com/mycompany/mypackage)
package com.mycompany.mypackage;
@Service
public class MyClass {
@Value(“${someString}”)
private String someString;
public printString() {
System.out.println(someString);
}
}
这是我的测试类的样子: (文件路径:src/test/java/com/mycompany/mypackage)
package com.mycompany.mypackage;
@RunWith(SpringJUnit4ClassRunner.class)
public class MyClassTest {
@InjectMocks
MyClass myClass
@Test
public testPrintString() {
myClass.printString()
}
}
我尝试使用@Autowired 代替@InjectMocks 来完全实例化MyClass bean,但这实际上不会创建MyClass 的实例,并且每当我尝试使用'测试中的 myClass' 变量。
对于我的特定用例,使用构造方法并不是一个现实的选择。
任何帮助都会很棒!
【问题讨论】:
-
修复你的
@Service使用构造函数参数而不是字段注入,然后你可以说new MyClass(randomString)。 -
我不能使用构造函数方法
标签: java spring spring-mvc junit mockito