2017-01-06 1 views
1

응용 프로그램에는 Junits이 없습니다. 그러나 다른 모듈에서는 Jmockit을 사용하여 Junits를 작성하기 시작했습니다. 따라서 모든 핵심 자바 또는 Jmockit 솔루션은 높이 평가 될 것입니다.Junit : 인스턴스가없는 개인 메서드 호출

싱글 톤인 응용 프로그램 초기화 클래스가 있는데, 데이터베이스 [데이터로드], 속성 파일 등을 호출하여 응용 프로그램을 초기화합니다. 객체 생성은 복잡합니다.

[메소드 이름 addMoreInitilization] 클래스를 초기화하는 새로운 메소드를 작성 중입니다.

위 시나리오에서 Junit을 쓰고 싶습니다. 복잡한 객체 생성 로직을 호출하지 않고 addMoreInitilization 메소드에 대해 Junit을 작성하는 방법이 있습니까? 왜냐하면 많은 종속성을 갖고 있기 때문에 모든 것을 조롱하고 실현 불가능하고 메소드를 정적으로 만들고 싶지 않기 때문입니까?

Class ApplicationStartUp { 

    private ApplicationStartUp applicationStartUp; 
    // assume single ton implemented 

    private ApplicationStartUp() { 
     // complex object creation 
     addMoreInitilization(); 
    } 

    public static getInstance() { 
    } 

    // new method 
    private addMoreInitilization() { 
     // my logic needs to be tested using junit 
    } 

} 

답변

0

아래 ApplicationStartUp 클래스

의사 자바 코드 당신은 당신의 검사 결과에서 "ApplicationStartUp"를 확장 할 수 있습니다. 그런 다음 원하지 않는 방법을 무시하십시오. 이렇게하면 하위 클래스의 Object를 만들고 수퍼 클래스의 메서드 "addMoreInitialization"을 호출 할 수 있습니다.

+0

개인 메소드를 무시할 수 없습니다. 그건별로 의미가 없습니다. – GhostCat

+0

당신이 옳습니다. 못 봤어. – SebastianK

+0

먼저 ApplicationStartUp 클래스를 확장하려고했지만 슈퍼 클래스의 private 메소드를 호출 할 수 없습니다. 또한 다른 것들을 사용하여 시도 링크. 반사하지만 개체를 ​​초기화해야하며 복잡한 작업이므로 가치가 없습니다. 비. JMockit의 Deencapsulation 클래스이지만 리플렉션에 문제가 있습니다. – Mahesh