java测试junit,用于模拟覆盖率
对不起我的英语。 我对junit测试有问题。 客户机要求覆盖所有类,即使是dto/model/entity(即使是错误的,我也必须这样做)。 但我在测试getter和setter时遇到困难。 我无法覆盖,我已经测试了许多解决方案,但要么覆盖率为0,要么出现错误,我该怎么办
我的班级:
@Entity
public class AnagrafeUser {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
} }
我的班级考试
public class AnagrafeUserTest {
@InjectMocks
private AnagrafeUser anagrafeUser;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void setanagrafeUser() throws Exception {
when(anagrafeUser.getFirstName()).thenReturn("fistname");
when(anagrafeUser.getLastName()).thenReturn("lastName");
anagrafeUser.setFirstName("fistname");
anagrafeUser.setLastName("lastName");
}
始终出错,例如,在以下情况下,最后一次出错: when()需要的参数必须是“模拟的方法调用”。 例如: when(mock.getArticles())。返回(物品)
此外,出现此错误的原因可能是:
- 您可以存根:final/private/equals()/hashCode()方法。 那些方法不能被存根/验证。 不支持对非公共父类声明的模拟方法李>
- 在when()中,您不在mock上调用方法,而是在其他对象上调用方法。 tks
setter没有覆盖范围
新测试,覆盖率100%,但可以吗
公共类anagrafeuser测试{
@InjectMocks
private AnagrafeUser anagrafeUser;
Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
anagrafeUser.setFirstName("a");
anagrafeUser.setLastName("a");
anagrafeUser.setUserCode("a");
}
Test
public void setanagrafeUser() throws Exception {
assertNotNull(anagrafeUser.getFirstName());
assertNotNull(anagrafeUser.getLastName());
assertNotNull(anagrafeUser.getUserCode());
}
}
# 1 楼答案
你不需要挣扎那么多。首先,这是一门简单的课程。因此,您可以使用提供断言方法的Assert类,该类对于编写测试用例非常有用
我永远不会建议您在这里使用Mockito,因为这只是基本的POJO类。如果代码中存在依赖项(如数据库n all),则使用Mockito。在这种情况下,我们使用Mockito创建虚拟对象并执行相关操作