2013-09-05 6 views
1

다음은 내 OSGiFramework 클래스에서 afterPropertiesSet을 호출하려고하는 jUnit 테스트입니다. 그러나 어떻게 든 그 흐름 중에 getBundlesInformation 메소드가 호출되지 않습니다.jUnit 테스트에서 메소드 호출하기

내 jUnit 테스트를 디버깅 할 때 afterPropertiesSet 메서드가 호출 된 다음 initializeModelFramework 메서드로 이동 한 다음 getBundlesInformation 메서드로 이동하지 않습니다.

@Test 
public void testOSGiFramework() { 

    Method method; 
    try { 
     method = OSGiFramework.class.getDeclaredMethod("afterPropertiesSet", null); 
     Object o = method.invoke(new OSGiFramework(), null); 

     Assert.assertEquals(false, o instanceof Void); 
    } 
} 

다음은 OSGiFramework의 방법

을 클래스 -입니다
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 

@Override 
public void afterPropertiesSet() throws Exception { 

    try { 
     initializeModelFramework(); 
    } 
} 

private void initializeModelFramework() { 

    final ScheduledFuture<?> taskHandle = scheduler.scheduleAtFixedRate(
      new Runnable() { 
       public void run() { 
        try { 
         getBundlesInformation(); 
        }catch(Exception ex) { 
         LOG.log(Level.SEVERE, "Exception in OSGiFramework::initializeModelFramework " +ex); 
         ex.printStackTrace(); 
        } 
       } 
      }, 0, 30, TimeUnit.MINUTES); 
} 

protected static void getBundlesInformation() throws BundleException, Exception { 
    System.out.println("Hello"); 
} 

사람이 문제가 무엇인지 알고 있나요?

답변

0

글쎄, getBundlesInformation() 메소드가 다른 스레드에서 실행되고있다. 그렇다면 assert 메소드 나 테스트 후에 누가 실행되지 않을지 누가 ​​알 수 있을까? 어느 쪽이든, 그것은 문제는 스레드 응용 프로그램을 테스트 Junit과 함께 할 것 같다.

다른 스레드로 Junit 테스트를 살펴볼 수도 있습니다. 나는 개인적으로 한번도 해본 적이 없지만 빠른 구글 검색 후에는 매우 단순한 작업이 아니며 피하기 쉽고 테스트를 중단하여 다른 스레드를 다룰 필요가없는 것으로 보인다.

죄송합니다.이 답변이 더 이상 사용되지 않는 경우 - 더 많은 경험이있는 사람이보고있는 경우 더 나은 답변을 시도해주세요.

Unit testing a multithreaded application?

Thread behaving strangely in JUnit

행운을 빕니다 :

빠른 검색에 나를 데리고!

0

스레드 (Runnable 정의한 개체)를 시작하지 않았으므로 run 메서드는 실행되지 않습니다. 실행하려는 run 메소드에 대한 스레드를 시작해야합니다.

+0

정말 이니? 내 응용 프로그램을 실행하는 경우 동일한 코드가 잘 작동하기 때문입니다. 하지만 jUnit 테스트를 통해 호출하는 경우 작동하지 않습니다. – ferhan

+0

jUnit없이 작동하는 경우, 잘못된 것입니다. –

관련 문제