2013-03-02 2 views
1

У меня есть эта проблема:Test многопоточный код в TestNG

@Test 
public void foo() throws Exception { 
    ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1); 
    stpe.submit(new Runnable() { 
     @Override 
     public void run() { 
      // does not make this unit test fail :(
      Assert.AssertEquals(1, 2); 
     } 
    }); 
} 

Как получить эти исключения потерпеть неудачу мой тест?

ответ

4

Метод submit() возвращает Future<?>. Если вы пытаетесь получить результат будущего, метод бросить Throwable, который был брошен внутри Runnable:

Future<?> future = stpe.submit(.... 

future.get(); // this call will throw the exception that has been thrown in the Runnable. 

Таким образом, исключение/ошибки в методе выполнения будет сделать тест провал.

+0

Это правильно, но не решает мою фактическую ситуацию, в которой я не контролирую пул потоков, я неправильно перегонял его. Так что я соглашусь с этим и отправлю другое? – djechlin

+0

Вы имеете в виду, что вы не контролируете код, в котором вызывается метод отправки, поэтому вы не можете получить объект Future ? Я думаю, что другой вопрос с более подробной информацией будет хорошим, да. –

+0

здесь - http://stackoverflow.com/questions/15170055/failing-testng-unit-test-from-a-callback-i-dont-own-in-my-code – djechlin

Смежные вопросы