@RunWith(PowerMockRunner.class)中@InjectMocks类的@Inject实例为null

时间:2019-01-07 19:13:11

标签: junit dependency-injection nullpointerexception

我有一个用@RunWith(PowerMockRunner.class)注释的Test类,其中我已声明@InjectMocks ClassA classA。并且在ClassA中有@Inject注释的依赖项。 在运行我的测试用例时,由于classA.method()返回null,带有@Inject的那些实例为null。

@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassA.class, LogManager.class})
@PowerMockIgnore("javax.net.ssl.*")
public class TestClass {
   @InjectMocks
   private ClassA classA;
}


@Profile
@Log
@Named
@Configuration
public class ClassA {
  @Inject
  private DependencyClass dependencyClass;
}

由于dependecnyClass为空,因此我得到了NullPoiterException。

1 个答案:

答案 0 :(得分:0)

@Inject Mocks创建该类的实例,并将所有@Mock@Spy注入该实例。您都没有声明。

@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassA.class, LogManager.class})
@PowerMockIgnore("javax.net.ssl.*")
public class TestClass {

   // add mock
   @Mock
   private DependencyClass dependencyClass

   @InjectMocks
   private ClassA classA;
}