2013-08-30 1 views
1

Я начинаю работать на Java, используя DrJava. Я следую TDD для обучения. Я создал метод, который, как предполагается, проверяет некоторые данные и недопустимые данные, метод должен делать исключение.Как проверить исключение в DrJava?

Это отличное исключение, как ожидалось. Но я не уверен, как написать единичный тест, ожидающий исключения.

In .net у нас есть ExpectedException(typeof(exception)). Может ли кто-нибудь указать мне, что эквивалентно в DrJava?

Благодаря

+0

, которую вы должны использовать DrJava –

ответ

2

Если вы используете JUnit, вы можете сделать

@Test(expected = ExpectedException.class) 
public void testMethod() { 
    ... 
} 

Посмотрите на API для получения более подробной информации.

+0

и в более ранних версиях JUnit, вы можете сделать что-то вроде 'попробовать {DoSomething(); потерпеть неудачу («ожидается исключение»)? ;} catch (ExpectedException e) {} ' –

+1

OP запускается на Java, поэтому он может также изучить самые современные методы, поскольку они скоро будут устаревшими. – adarshr

0

Если вы просто хотите проверить, что конкретный тип исключения был брошен где-то в вашем тестовом методе, то уже показанный @Test(expected = MyExpectedException.class) в порядке.

Для более совершенного тестирования исключений вы можете использовать @Rule, чтобы уточнить, где вы ожидаете, что это исключение, или добавить дополнительные проверки об исключенном объекте (т. Е. Строка сообщения равна некоторые ожидаемое значение или содержит некоторое ожидаемое значение:

class MyTest { 

    @Rule ExpectedException expected = ExpectedException.none(); 
    // above says that for the majority of tests, you *don't* expect an exception 

    @Test 
    public testSomeMethod() { 
    myInstance.doSomePreparationStuff(); 
    ... 
    // all exceptions thrown up to this point will cause the test to fail 

    expected.expect(MyExpectedClass.class); 
    // above changes the expectation from default of no-exception to the provided exception 

    expected.expectMessage("some expected value as substring of the exception's message"); 
    // furthermore, the message must contain the provided text 

    myInstance.doMethodThatThrowsException(); 
    // if test exits without meeting the above expectations, then the test will fail with the appropriate message 
    } 

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