Вот тест:Создание этого JUnit Test проходят
@Test
public void invalidPort() {
try {
SS.main(SS_ARGS);
assertTrue(false);
} catch (Exception e) {
assertTrue(true);
}
}
Вот соответствующий код в СС:
public static void main(String[] args) {
try {
if (obj.start() == 0) {
...stuff
}
} catch (BindException e) {
System.out.println("Address already in use.");
} catch (IOException e) {
e.printStackTrace();
}
}
Это то, что obj.start() делает:
public int start() {
try {
HttpServer server = HttpServerFactory.create(serverURI);
this.server = server;
server.start();
return 0;
} catch (NullPointerException e) {
System.out.println("Error: Please specify the server URI");
return 1;
} catch (Exception e) {
System.out.println("Error: Invalid port!");
return 1;
}
}
В этом тесте я уверен, что порт недействителен. При запуске программа выводит «Ошибка: неверный порт!». что хорошо, но тест не проходит. Он терпит неудачу, потому что он достигает строки assertTrue (false). Как я могу пройти этот тест?
Удалите строку 'assertTrue (false)', которая всегда будет * сбой теста? – Robert
OP использует это в идиоме для проверки ожидаемых исключений. –
Но 'assertTrue (true)' is no-op. –