注射实例不记录期望值

时间:2013-12-12 18:55:34

标签: jmockit

这是我的代码,我正在进行代码覆盖率测试

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;
    }
}

如何解决断言错误?

1 个答案:

答案 0 :(得分:0)

测试中使用的@Injectable模拟确实有效。但是,它永远不会注入到测试对象中,而是会创建自己的Student实例。因此,在这种情况下,您使用的是@Mocked,而不是@Injectable

我应该指出另外两件事:

  1. 请注意API文档。 JMockit jar文件(甚至是Maven文件)包含源代码,以便于从任何Java IDE访问API文档。
  2. Student这样的“值类”(仅包含getter / setter)不适合模拟。一般来说,他们不应该被嘲笑。相反,应该使用真实实例。