Java программа не завершается после Assert.fail () - PullRequest
0 голосов
/ 09 июля 2020

У меня есть программа Java, в которой я пытаюсь провалить тест в конце с помощью Assert.fail (), но в конце программы потоки продолжают работать, и программа не завершается.

@Test()
void function(){
try {
        post_call =  service.submit(new Counter(asyncUrl, input,transaction_id));
        get_call =  service.submit(new PathScanner(asyncUrl, input, transaction_id));
        
        try {     
            post_call.get();        
        } catch (ExecutionException ex) {
            Assert.fail();          
            ex.getCause().printStackTrace();  
        }
        try {
            get_call.get();
        } catch (ExecutionException ex) {
             Assert.fail();
             ex.getCause().printStackTrace();
                         
        }
    } catch (Exception ex) {
        ex.printStackTrace();
}
}

это фрагмент тестового метода, и тестовый пример также завершается неудачно, как и ожидалось, но программа не завершается после вызова Assert.fail ().

Если я удалю assert.fail (), тогда программа успешно завершается ... просто тогда она не показывает никаких сбоев.

Пожалуйста, предложите метод завершения всех активных потоков после вызова Assert.fail.

1 Ответ

1 голос
/ 09 июля 2020

Для завершения любого теста на Junit 4 добавьте аргумент в аннотацию тайм-аут

@Test(timeout=2000)
public void testWithTimeout() {
  ...
}

Или добавьте правило

@Rule
    public Timeout globalTimeout = Timeout.seconds(10); // 10 seconds max per method tested

Для Junit 5

@Test
    @Timeout(value = 100, unit = TimeUnit.MILLISECONDS)
    void failsIfExecutionTimeExceeds100Milliseconds() {
        // fails if execution time exceeds 100 milliseconds
    }

Подробнее JUnit 4 Тайм-аут для тестов

Подробнее JUnit 5 Тайм-аут для тестов

...