@Service
public class MyClass {
...
@Autowired
public MyClass(@Value("${my.value}") String myValue) {
...
}
...
}
我的测试课:
public class MyTest {
@Mock(name = "solrServer")
private SolrServer solrServer;
@InjectMocks
private MyClass myClassMock;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
....
}
我有一个异常(exception),如下:
org.mockito.exceptions.base.MockitoException: Cannot instantiate @InjectMocks field named 'myClassMock' of type 'class mypackage.MyClass'. You haven't provided the instance at field declaration so I tried to construct the instance. However the constructor or the initialization block threw an exception : null
at mypackage.MyTest.setUp(MyTest.java:46) ... Caused by: java.lang.NullPointerException ...
如何从 MyTest 类注入(inject) @Value 字段并修复它?
最佳答案
您可以通过手动创建类的实例,在 @Before
带注释的方法中完成此操作,如下所示:
public class MyTest {
@Mock(name = "solrServer")
private SolrServer solrServer;
@InjectMocks
private MyClass myClassMock;
@Before
public void setUp() {
myClassMock = new MyClass("value you need");
MockitoAnnotations.initMocks(this);
}
@Test
....
}
关于java - Mockito 中的 Spring @Value 字段注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37609933/