有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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())。返回(物品)

此外,出现此错误的原因可能是:

  1. 您可以存根:final/private/equals()/hashCode()方法。 那些方法不能被存根/验证。 不支持对非公共父类声明的模拟方法
  2. 在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) 个答案

  1. # 1 楼答案

    你不需要挣扎那么多。首先,这是一门简单的课程。因此,您可以使用提供断言方法的Assert类,该类对于编写测试用例非常有用

    public void AnagrafeUserTest{
    
    AnagrafeUser anagrafeUser = new AnagrafeUser();
    
    @Test
    public void setanagrafeUser(){
    anagrafeUser.setFirstName("Harry");
    anagrafeUser.setLastName("jackson");
    Assert.assertEquals("Harry",anagrafeUser.getFirstName());
    Assert.assertEquals("jackson",anagrafeUser.getLastName());
    }}
    

    我永远不会建议您在这里使用Mockito,因为这只是基本的POJO类。如果代码中存在依赖项(如数据库n all),则使用Mockito。在这种情况下,我们使用Mockito创建虚拟对象并执行相关操作