这是我的代码,我正在进行代码覆盖率测试
public class RegisterTest {
@Tested Register register;
@Test
public void testGetStudentName(@Injectable final Student student) {
new NonStrictExpectations(){
{
student.getRollNo();
result="ab1";
}
};
assertEquals(register.getStudentNo(), "ab1");
}
}
我得到了上述测试用例的断言错误,因为注入实例在这里不起作用..我不知道y?
这是我的测试类...
Register.class
public class Register {
Student student=new Student();
public String getStudentNo(){
return student.getRollNo();
}
}
这是我的依赖类
Student.class
public class Student {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
如何解决断言错误?
答案 0 :(得分:0)
测试中使用的@Injectable
模拟确实有效。但是,它永远不会注入到测试对象中,而是会创建自己的Student
实例。因此,在这种情况下,您使用的是@Mocked
,而不是@Injectable
。
我应该指出另外两件事:
Student
这样的“值类”(仅包含getter / setter)不适合模拟。一般来说,他们不应该被嘲笑。相反,应该使用真实实例。