2013-11-26 1 views
1
MyClass{ 

public void myfunction(){ 
AnotherClass c=new AnotherClass(); 
c.somethod();//This method sets some values of the AnotherClass object c; 

} 
} 

У меня есть вышеприведенный сценарий, чтобы быть tested.How я могу проверить, если значение AnotherClass объекта с устанавливается properly.I понять, что я должен использовать Mock объекты для них. Но не мог понять, потому что здесь я не могу передать макет объекта AnotherClass моей функции из-за вышеупомянутого дизайна. Может кто-нибудь мне помочь?Junit с помощью фиктивных объектов

+0

попытайтесь проверить результат вызова метода myfunction(). если переменная 'c' является локальной переменной метода, что происходит, когда вы вызываете c.somethod()? каков результат, который внешне можно наблюдать? –

+0

Результат не может быть доступен снаружи. c.somemethod() устанавливает vaule of c, который был создан в myfunction() – user1312312

+0

, вы должны использовать функциональность модульного тестирования, доступную для внешней стороны в той или иной форме. если выполнение c.somethod() не делает ничего, что внешне видимо, тогда IMHO вам не нужно будет его тестировать –

ответ

1

, если вы действительно хотите сделать это следует делать редизайн как следует (как Дэн также предложил)

import org.junit.Test; 
import org.mockito.Mockito; 

public class TestingMock { 

    @Test 
    public void test() { 
     MyClass target = Mockito.spy(new MyClass()); 
     AnotherClass anotherClassValue = Mockito.spy(new AnotherClass()); 
     Mockito.when(target.createInstance()).thenReturn(anotherClassValue); 
     target.myfunction(); 
     Mockito.verify(anotherClassValue).somethod(); 
    } 

    public static class MyClass { 

     public void myfunction(){ 
      AnotherClass c = createInstance(); 
      c.somethod();//This method sets some values of the AnotherClass object c; 
     } 

     protected AnotherClass createInstance() { 
      return new AnotherClass(); 
     } 
    } 

    public static class AnotherClass { 

     public void somethod() { 

     } 

    } 
} 

Вы увидите, что комментирование c.somethod() делает тест потерпеть неудачу. Я использую Mockito.

Смежные вопросы