在 Eclipse 中测试 运行 正常,但在 mvn 命令中失败
Tests Run fine in Eclipse but failed in mvn command
测试非常非常简单测试
@RunWith(MockitoJUnitRunner.class)
public class UnitTestMyCode {
@InjectMocks
private MyClass resource;
@Mock
private DependentBean bean;
@Test
public void test1() throws Exception {
boolean ss = true;
assertThat(ss).isTrue();
}
错误
org.mockito.exceptions.base.MockitoException: Field 'resource' annotated with @InjectMocks is null.
Please make sure the instance is created *before* MockitoAnnotations.initMocks();
Example of correct usage:
class SomeTest {
@InjectMocks private Foo foo = new Foo();
@Before public void setUp() {
MockitoAnnotations.initMock(this);
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.withBefores(JUnit45AndHigherRunnerImpl.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:276)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner.schedule(ParentRunner.java:71)
Surefire 插件配置
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludes>
<exclude>**/*IntegrationTest*.java</exclude>
</excludes>
<includes>
<include>**/*UnitTest*.java</include>
</includes>
<skip>false</skip>
</configuration>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/*IntegrationTest*.java</exclude>
</excludes>
<includes>
<include>**/*UnitTest*.java</include>
</includes>
<skip>false</skip>
</configuration>
</plugin>
我已按照此处的步骤操作 JUnit tests pass in Eclipse but fail in Maven Surefire
但运气不好。
这里有任何帮助。
更新 Mockito 解决了问题
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
测试非常非常简单测试
@RunWith(MockitoJUnitRunner.class)
public class UnitTestMyCode {
@InjectMocks
private MyClass resource;
@Mock
private DependentBean bean;
@Test
public void test1() throws Exception {
boolean ss = true;
assertThat(ss).isTrue();
}
错误
org.mockito.exceptions.base.MockitoException: Field 'resource' annotated with @InjectMocks is null.
Please make sure the instance is created *before* MockitoAnnotations.initMocks();
Example of correct usage:
class SomeTest {
@InjectMocks private Foo foo = new Foo();
@Before public void setUp() {
MockitoAnnotations.initMock(this);
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.withBefores(JUnit45AndHigherRunnerImpl.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:276)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner.schedule(ParentRunner.java:71)
Surefire 插件配置
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludes>
<exclude>**/*IntegrationTest*.java</exclude>
</excludes>
<includes>
<include>**/*UnitTest*.java</include>
</includes>
<skip>false</skip>
</configuration>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/*IntegrationTest*.java</exclude>
</excludes>
<includes>
<include>**/*UnitTest*.java</include>
</includes>
<skip>false</skip>
</configuration>
</plugin>
我已按照此处的步骤操作 JUnit tests pass in Eclipse but fail in Maven Surefire 但运气不好。
这里有任何帮助。
更新 Mockito 解决了问题
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>