2013-08-30 2 views
1

Je commence en Java en utilisant DrJava. Je suis TDD pour apprendre. J'ai créé une méthode qui est supposée valider certaines données et sur des données invalides, la méthode est supposée lancer une exception.Comment tester l'exception dans DrJava?

Il lance une exception comme prévu. Mais je ne suis pas sûr, comment écrire un test unitaire pour attendre une exception.

En .net nous avons ExpectedException(typeof(exception)). Quelqu'un peut-il me diriger vers quel est l'équivalent dans DrJava?

Merci

+0

vous devez utiliser DrJava –

Répondre

2

Si vous utilisez JUnit, vous pouvez faire

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

Jetez un oeil à la API pour plus de détails.

+0

et dans les anciennes versions de JUnit, vous pouvez faire quelque chose comme 'essayer {doSomething(); échec (« prévu une exception »)? ;} catch (ExpectedException e) {} ' –

+1

OP commence en Java, donc il pourrait aussi bien apprendre les pratiques de pointe, car ils seraient bientôt périmés de toute façon. – adarshr

0

Si vous voulez simplement tester le fait qu'un type d'exception particulier a été lancé quelque part dans votre méthode de test, alors le @Test(expected = MyExpectedException.class) déjà affiché est correct. Pour des tests plus poussés des exceptions, vous pouvez utiliser un @Rule, afin de préciser où vous prévoyez que cette exception soit levée, ou d'ajouter d'autres tests sur l'objet d'exception qui a été lancé (c'est-à-dire que la chaîne de message est égale à @Rule). une valeur attendue ou contient une valeur attendue:

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 
    } 

}