Comment peut-on marquer un essai, comme un échec prévisible dans JUnit 4?
Dans ce cas, je veux continuer à exécuter ce test jusqu'à ce que quelque chose est patché en amont. Ignorant le test va un peu trop loin, alors je risque de l'oublier. J'ai peut-être ajouter un @expected
d'annotation et d'intercepter l'exception levée par assertThat
, mais qui semble être sur le comportement attendu.
Voici ce que mon test actuel ressemble:
@Test
public void unmarshalledDocumentHasExpectedValue()
{
doc = unmarshaller.unmarshal(getResourceAsStream("mydoc.xml"));
final ST title = doc.getTitle();
assertThat(doc.getTitle().toStringContent(), equalTo("Expected"));
}
Qui affirment devrait réussir, mais en raison d'un bogue amont, il ne le fait pas. Pourtant, ce test est correct; il doit réussir. Pratiquement toutes les solutions que j'ai trouvé sont trompeuses. Maintenant, je pense que @Ignore("This test should pass once fixed upstream")
est mon meilleur pari, mais j'ai encore à vous rappeler de revenir à elle. Je préfère que l'exécution des tests.
En Python, je peux utiliser les expectedFailure décorateur:
class ExpectedFailureTestCase(unittest.TestCase):
@unittest.expectedFailure
def test_fail(self):
self.assertEqual(1, 0, "broken")
Avec Qt QTestLib en C++, vous pouvez utiliser QEXPECT_FAIL:
QEXPECT_FAIL("", "Will be fixed next version", Continue);
QCOMPARE(i, 42);
Dans les deux cas ci-dessus, l'exécution des tests unitaires, qui est ce que je suis en espérant qu'il arrive. Ai-je raté quelque chose dans JUnit?