2014-06-11 2 views
1

나는 시험 클래스 TestService1에 시험 방법과 두 개의 서비스 클래스 Service1Service2을 포함하고있다. 나는 Service1 클래스 메서드에 대한 호출을 포함하는 클래스에 메서드 isResourceAlreadyPresent에 대한 JUnit 테스트를 작성하고 있습니다. 시험 방법에서 나는 testMapper1.getAlreadyPresentResources()가 다음 호출되는 경우 때문에 크기가 1입니다하지만이 목록을 반환하지하고 목록을 반환하지만 크기가 0mockito`올바른 응답을 얻지 못했을 때

@ContextConfiguration(locations = "../TestServiceApplicationContext1.xml") 
    public class TestService1 
    { 
     @Autowired 
     private TestMapper1 testMapper1; 

     private TestResource testResource1; 
     private List<TestResource> mockTestResourceList; 

     private Service1 service1; 

     private Service1 service2; 

     @Before 
     public void setUp() 
     { 
     testMapper1 = mock(TestMapper1.class); 

     service1 = Service1Util.getService(); 
     service1.setTestMapper1(testMapper1); 

     mockTestResourceList = new ArrayList<TestResource>(); 
     testResource1 = Service1Util.createTestResource(); 
     testResource1.setId(1); 
     mockTestResourceList.add(testResource1); 

     } 

     @Test 
     public void isResourceAlreadyPresentTest() 
     { 
     when(testMapper1.getAlreadyPresentResources()).thenReturn(mockTestResourceList); 

     boolean isPresent = service2.isResourceAlreadyPresent(); 

     assertTrue(isPresent == true); 
     } 

    } 

    public class Service2 
    { 
     ... some code ... 

     public boolean isResourceAlreadyPresent() 
     { 
     List<TestResource> resourceList = Service1Util.getAlreadyPresentResources(); //service1.getTestMapper1().getAlreadyPresentResources(); 
     //resourceList size is 0 
     if(resourceList.size() > 0) 
      return true; 
     else 
      return false; 
     } 

     ... some code ... 
    } 
되는 mockTestResourceList를 반환해야

when(testMapper1.getAlreadyPresentResources()).thenReturn(mockTestResourceList); 

을 작성했습니다

+0

이것은 게시 할 수 없으므로 작성한 코드와 작동하지 않는 테스트 코드입니다. 이것을 더미 코드로 간주 할 수 있습니다. – eatSleepCode

답변

0

junit이 메소드를 호출하기 전에 테스트를 수행중인 Service2 클래스에서 Service1 객체를 설정해야합니다. 나는 Service1 Object를 Service 2에서 올바르게 설정하지 않았으며 다른 값을 취한다고 가정합니다.

Service2에서 테스트 메서드를 호출하기 전에 Reflection을 사용하여 Service2 클래스의 Service1 개체를 설정하십시오. 반사는 테스트 목적으로 만 사용해야하며 코드에는 사용하면 안됩니다.

ReflectionTestUtils.setField(service1instance, "service", 
      serviceobjectvalue); 
관련 문제