2017-01-28 3 views
0

SSLContext를 조작하는 몇 가지 방법을 쓰고 있습니다. 기능을 테스트하기 위해 JUnit-Test를 작성했습니다. SSLContext를 재설정 할 수있는 방법을 찾을 수 없기 때문에 불행하게도 저는 막혔습니다. 이전 테스트의 영향이 다음 테스트에 영향을 미치기 때문에 JVM 자체에서 모든 테스트를 실행해야합니다. SSLContext 솔기는 DI 방식으로 작성되지 않았기 때문에 재설정 할 수 없습니다.자바 JUnit : JUnit 테스트에서 SSLContext를 재설정하십시오.

SSLContext를 재설정 할 수있는 방법이 있습니까?

모든 JUnit-Test를 자체 JVM에서 실행할 수 있습니까?

이것은 작동하지 않습니다 (내가 빌드 - 관리 - 도구로 Maven을 사용)이 부분적으로 만 작동합니다

SSLContext defaultSSLContext = SSLContext.getDefault(); 

// manipulate SSLContext 

SSLContext.setDefault(defaultSSLContext); 

편집 2017년 2월 2일

내 자바 설치가 끊어졌습니다

내 Java 설치가 끊어 졌으므로 기본 SSLContext는 null (null == SSLContext.getDefault())입니다. 그래서 SSLContext를 설정할 수 없었습니다. 이 메서드는 NullPointerException을 발생시킵니다. Java를 다시 설치 했으므로 SSLContext가 다시 작동하고 기본 SSLContext가 널 (NULL)이되지 않습니다. SSLContext에

중간 변수에 SSLContext에 저장하고, SSLContext에 대한 작동 나중에 그것을 복원을 다시 설정하라는

. 그러나 java.net.URL과 같은 구현은 아닙니다. 이러한 구현은 첫 번째 호출에서 SSLContext의 Singleton 인스턴스를 유지하기 위해 이어지고 JVM의 런타임 중에 절대로 변경하지 않습니다.

JUnit을 내가 스테판 버크 너의 제안을 따라 메이븐

과 실행을 포크와 메이븐 확실한 플러그인을 사용했다.

나는 프로젝트의 pom.xml에 추가 :
</plugins> 
    [...] 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <configuration> 
      <reuseForks>false</reuseForks> 
      <forkCount>2</forkCount> 
     </configuration> 
    </plugin> 
</plugins> 

내가 방해하지 않고 독자적으로 실행할 수있는 부분으로의 JUnit 테스트를 분할합니다. 그래서 FooTest.javaFoo01Test.java ... Foo03Test.java이되었습니다. 이제이 테스트는 Maven과 Eclipse 내에서 실행됩니다.

+0

에는 리셋이 필요하지 않도록 * UnitTests은 * 다음은'SSLContext'을 조롱한다 작성. –

+0

@TimothyTruckle : SSLContext의 업데이트가 예상대로 작동하면 서버에 액세스하여 테스트하기 때문에 불행히도 내 경우에는 불가능합니다. 개별 SSLContext 또는 SSLFactory를 지원하지 않는 타사 라이브러리가 포함되어 있으므로 기본 SSLContext를 업데이트해야합니다. –

+1

* "불행히도 내 경우에는 불가능합니다. 서버에 액세스하여 테스트합니다."* 그런 다음 허용 테스트 *를 수행하고 있습니다. 괜찮습니다. 그러나 자신의 코드가 올바르게 작동하는지 확인하려면 * unittest *도 있어야합니다. 이 * unittests *는 자신의 코드에 속하지 않는 클래스를 조롱해야합니다 (적어도). –

답변

관련 문제