Пример: в файле web.xml тег
<context-param>
<param-name>chatpropertyfile</param-name>
<!-- Name of the chat properties file. It contains the name and description of rooms.-->
<param-value>chat.properties</param-value>
</context-param>
И chat.properties вы можете объявить свои свойства следующим образом:
Для Ex:
Jsp = Discussion about JSP can be made here.
Java = Talk about java and related technologies like J2EE.
ASP = Discuss about Active Server Pages related technologies like VBScript and JScript etc.
Web_Designing = Any discussion related to HTML, JavaScript, DHTML etc.
StartUp = Startup chat room. Chatter is added to this after he logs in.
Вы действительно хотите, чтобы тест выполнял одну вещь и проверял ее. Если вы не уверены, какое именно исключение будет выдано, для меня это не будет хорошим испытанием.
например. (в псевдокоде)
try {
badOperation();
/// looks like we succeeded. Not good! Fail the test
fail();
}
catch (ExpectedException e) {
// that's fine
}
catch (UnexpectedException e) {
// that's NOT fine. Fail the test
}
, поэтому, если вы хотите проверить, что ваш метод выдает 2 разных исключения (для 2 наборов входных данных), вам понадобится 2 теста.
Используйте catch-исключение :
// test
public void testDo() {
// obj.do(1) must throw either A or B
catchException(obj).do(1);
assert caughtException() instanceof A
|| caughtException() instanceof B;
// obj.do(2) must throw A but not SubclassOfA
catchException(obj).do(2);
assert caughtException() instanceof A
&& !(caughtException() instanceof SubclassOfA);
}
Как бы вы ожидали, что «ожидаемые» будут работать? Метод может выдать только одно исключение.
Вы должны будете написать разные модульные тесты для каждого способа, который может дать сбой. Поэтому, если метод законно выбрасывает два исключения, вам нужно настроить два теста, чтобы заставить метод генерировать каждое исключение.
@Test(expected=Exception.class)
Это выбросит все возможные исключения.
Делайте тесты как можно более простыми и короткими. Цель JUnit-Test - проверить только одну простую функциональность или один единственный способ отказа.
Действительно, в целях безопасности вы должны создать по крайней мере один тест для всех возможных способов выполнения.
Обычно это не всегда возможно, потому что если у вас есть метод, который анализирует строку, существует так много возможных комбинаций строк, что вы не можете охватить все.
Будьте краткими и простыми.
У вас может быть 30-40 методов тестирования для одного отдельного метод легко ... это действительно важно?
С уважением
Это невозможно с аннотацией.
В JUnit 4.7 вы можете использовать новое правило ExpectedException
public static class HasExpectedException {
@Interceptor
public ExpectedException thrown= new ExpectedException();
@Test
public void throwsNothing() {
}
@Test
public void throwsNullPointerException() {
thrown.expect(NullPointerException.class);
throw new NullPointerException();
}
@Test
public void throwsNullPointerExceptionWithMessage() {
thrown.expect(NullPointerException.class);
thrown.expectMessage("happened?");
throw new NullPointerException("What happened?");
}
}
Подробнее см.
Если обновление до JUnit 4.7 для вас невозможно, вы должны написать чистый модульный тест в форме
public test() {
try {
methodCall(); // should throw Exception
fail();
}
catch (Exception ex) {
assert((ex instanceof A) || (ex instanceof B) || ...etc...);
...
}
}