我的测试在詹金斯上失败了,但在本地通过了。在被测类的@Tested实例上使用Jmockit @Injectable字段注入

时间:2019-01-28 19:19:57

标签: java maven unit-testing jenkins jmockit

我正在测试BoyTest.java的子类。 BoyTest扩展了一个名为GirlTest的测试类。我在@Injectable(Jmockit)中使用GirlTest注入了一个列表。

现在,当我尝试从BoyTest的@Tested实例上的GirlTest中插入列表时。我看到我的测试失败,因为没有注入列表。测试失败,因为,预期为空列表,而实际为包含JSON的列表。 正在使用的Jmockit版本是:v1.41和JDK版本1.8.0_181

public class GirlTest {
@Tested
private Girl girl;

@Injectable
private List<someType> list;
}

public class BoyTest extends GirlTest {
@Tested
private Boy boy;


@Test
public void someTest(){
lis.add(json)
assertThat(boy.getJsons()).isEqualTo(Arrays.asList(json));
}
}
  

测试结果:预期列表元素在断言之前被添加到列表中   语句运行并期望测试通过Actual,测试通过   本地,希望在詹金斯考试通过

1 个答案:

答案 0 :(得分:0)

也许您尚未配置maven-surefire-plugin 您可以尝试在pom.xml文件中按如下所示添加这些代码

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.4.3</version>
   <configuration>
      <argLine>-javaagent:${settings.localRepository}/mockit/jmockit/0.998/jmockit-0.998.jar</argLine>
      <useSystemClassLoader>true</useSystemClassLoader>
    </configuration>
</plugin>

确保已配置此行。

<argLine>-javaagent:${settings.localRepository}/mockit/jmockit/0.998/jmockit-0.998.jar</argLine>

然后您可以在jenkins上使用jmockit