rad*_*pet 7 null mocking inject mockito
我在使用JUnit进行单元测试时遇到了一些麻烦.
考虑以下代码:
这是我要测试的类中的dependacy注入,我们称之为Controller.
@Inject private FastPowering fastPowering;
Run Code Online (Sandbox Code Playgroud)
这是单元测试:
@RunWith(MockitoJUnitRunner.class)
public class ControllerTest {
@Mock
FastPowering fastPower;
@InjectMocks
Controller controller;
@Test
public void test() {
assertEquals(
(controller.computeAnswer(new BigDecimal(2), 2)).longValue(),
(long) Math.pow(2, 2));
}
}
Run Code Online (Sandbox Code Playgroud)
似乎fastPower为null,请解释如何解决这个问题.空指针异常,因为在.computeAnswer方法中调用了@injected字段(fastPower)
编辑:
解决了我应该读过@Mock和@Spy之间的区别......
Kha*_*lid 10
使用MockitoAnnotations.initMocks
以启动@Mock
和@InjectMocks
对象.您的测试看起来像:
@Mock
FastPowering fastPower;
@InjectMocks
Controller controller;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
....
}
Run Code Online (Sandbox Code Playgroud)
Abd*_*sin 10
我使用了错误的注释,如果你想在 Mockito 测试中@Test
使用@InjectMocks
and ,那么你应该@Mock
@ExtendWith(MockitoExtension.class)
在您的测试类上添加注释@Test (org.junit.jupiter.api.Test)
使用而不是注释来注释您的测试方法@Test (org.junit.Test)
。请小心用于此注释的导入。这适用于mockito-core:3.6.28
归档时间: |
|
查看次数: |
12035 次 |
最近记录: |