2013-12-12 2 views
0

Вот мой код, и я делаю тестирование покрытия кодаОжидание не отражается в инъекционных случаях

public class RegisterTest { 
@Tested Register register; 


    @Test 
    public void testGetStudentName(@Injectable final Student student) { 

     new NonStrictExpectations(){ 
      { 
       student.getRollNo(); 
       result="ab1"; 

      } 
      }; 


      assertEquals(register.getStudentNo(), "ab1");  

    } 
} 

я получил ошибку утверждения для вышеприведенного TestCase, так как экземпляр инъекционного оленьей кожи работы here..I не знаем, у?

Вот мой TestClass ...

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

@Injectable макет, используемый в тесте не работает. Однако он никогда не вводится в тестируемый объект, который вместо этого создает свой собственный экземпляр Student. Итак, в таких ситуациях вы используете @Mocked, а не @Injectable.

Я хотел бы отметить две другие вещи, хотя:

  1. Пожалуйста, обратите внимание на документацию по API. Файлы JMockit jar (даже Maven) содержат исходный код, чтобы облегчить доступ к документации API из любой Java IDE.
  2. «Ценностные классы», такие как Student (которые содержат только геттеры/сеттеры), не являются хорошими кандидатами для насмешек. В общем, их не следует издеваться. Вместо этого следует использовать реальные экземпляры.
+0

Спасибо @ Rogerio, это очень помогло мне – Magesh