用mock测试junit的覆盖率

biswetbf  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(652)

对不起我的英语。我对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");
}

always error,例如last when:when()要求参数必须是“模拟的方法调用”。例如:when(mock.getarticles()).thenreturn(articles);
此外,出现此错误的原因可能是:
您可以存根其中一个:final/private/equals()/hashcode()方法。这些方法无法存根/验证。不支持对非公共父类声明的模拟方法。
在when()中,您不在mock上调用方法,而是在其他对象上调用方法。tks公司
设置器未覆盖。
新测试,覆盖率100%,但可以吗?
公共类anagrafeusertest{

@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());
}

}

7qhs6swi

7qhs6swi1#

你不需要挣扎那么多。首先是简单的pojo类。因此,您可以使用提供Assert方法的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创建虚拟对象并执行依赖操作。

相关问题