2014-01-18 3 views
1

AutoWired 클래스의 코드 범위를 계산하지 않는 Cobertura와 관련된 몇 가지 문제가 있습니다. 다음과 같은 클래스 레이아웃이 있습니다 :Autowired 클래스의 Cobertura 문제

class StartClass { 

    @Autowired 
    DeleteHandlerInterface handler; 

    // function to call handler 
} 

class SoftDeleteHandlerImpl implements DeleteHandlerInterface { 

    @Resource(name = "name") 
    AnotherClassInterface impl; 

    @Autowired 
    DataLayerInterface db; 

    // function to do work 
    impl.callFunction(); 
    db.delete(); 
} 

Cobertura는 StartClass 및 DataLayerInterface의 적용 범위를 결정할 수 있습니다. 하지만 SoftDeleteHandlerImpl과 AnotherClassInterface에 대한 0 % 적용 범위를 말하는 것입니다. 누구든지이 문제를 경험 했습니까?

+0

aspect-J 직조를 사용하고 있습니까? 그렇다면 통합 테스트를 위해 런타임 짜기가 가장 잘 작동합니다. –

+0

aspect-J와 함께 런타임 짜기를 사용하려면 어떻게해야합니까? – user1707582

+0

AspectJ 스타일의 직조를 사용하고 있습니까? 기본적으로 Spring은 동적 프록시와 cglib로 돌아갑니다. . JVM에 대한 cmd-line 인수 인 경우 : -javaagent : /lib/aspectjweaver.jar (IDE의 테스트 설정에서이 값을 설정할 수 있습니다) –

답변

0

아마도 코드는 처리기 기능을 통과하지 못합니다. 여기에 넣은 코드에는 메서드 나 메서드 호출이 없으므로 이해하기 어렵습니다. 그러나 브레이크 포인트를 추가하고 실제로 핸들러 클래스에 도달하는지 확인하십시오 (또는 디버그 할 수없는 경우 로그 라인을 추가하십시오).

+0

사실 로깅 때문에 코드가 내 처리기 기능을 통과하고 있습니다. – user1707582