2016-11-15 3 views
0

MockitoJunitRunner를 사용하여 아래의 함수를 테스트 할 때 예상대로 작동합니다. 내가 PowerMockRunner를 사용하여 동일한 테스트를 실행하고 때 나는 다음받을 예외 :EncryptionInitializationException MockitoJUnitRunner가 아닌 PowerMockRunner를 사용합니다.

org.jasypt.exceptions.EncryptionInitializationException : 그것은 예외 때를 던졌습니다 왜

java.security.NoSuchAlgorithmException: PBEWithMD5AndDES SecretKeyFactory not available 
functionToBeTested() { 
     Encryptor.encrypt(this.getIgvToken(), "IGVKEY123"); 
    } 

을 궁금 PowerMockRunner를 사용하십시오. 내 의존성은 다음과 같습니다.

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
    </dependency> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-module-junit4</artifactId> 
     <version>1.6.5</version> 
    </dependency> 
+1

PowerMockRunner는 자신의 클래스 로더를 사용합니다. 내 직감은 다른 클래스 로더를 사용하면 SecretKeyFactory의 로딩을 방해한다는 것입니다. PowerMock 또는 클래스 로더 계층 구조에 대해 충분히 알지 못합니다. –

+1

주석 추가 ** @ PrepareForTest ({Encryptor.class}) ** 작업. 방금 ClassUnderTest.class를 추가했습니다. 그 결과로 실패했습니다. 또한 Encryptor.class를 추가해야합니다. – ashy143

+0

듣기 좋다! 이를 자신의 질문에 대한 대답으로 추가 한 다음이를 받아 들여 문제를 해결 된 것으로 표시하십시오. 다른 독자들도 나중에 투표 할 수 있습니다! –

답변

0

@PrepareForTest({Encryptor.class}) 주석을 추가하십시오.