Как я могу пометить тест как ожидаемый сбой в JUnit 4?
В этом случае я хочу продолжить выполнение этого теста, пока что-то не будет исправлено вверх по потоку. Игнорирование теста идет слишком далеко, так как тогда я могу забыть об этом. Возможно, я смогу добавить аннотацию @expected
и поймать исключение, созданное assertThat
, но это также похоже на ожидаемое поведение.
Вот как выглядит мой текущий тест:
@Test
public void unmarshalledDocumentHasExpectedValue()
{
doc = unmarshaller.unmarshal(getResourceAsStream("mydoc.xml"));
final ST title = doc.getTitle();
assertThat(doc.getTitle().toStringContent(), equalTo("Expected"));
}
Это утверждение должно быть успешным, но из-за ошибки восходящего потока это не так. Тем не менее, этот тест правильный; он должен преуспеть. Практически все альтернативы, которые я нашел, вводят в заблуждение. Прямо сейчас я думаю, что @Ignore("This test should pass once fixed upstream")
- мой лучший выбор, но я все равно должен помнить, чтобы вернуться к нему. Я бы предпочел, чтобы тестовый прогон.
В Python я могу использовать expectedFailure decorator:
class ExpectedFailureTestCase(unittest.TestCase):
@unittest.expectedFailure
def test_fail(self):
self.assertEqual(1, 0, "broken")
С Qt QTestLib в С++ вы можете использовать QEXPECT_FAIL:
QEXPECT_FAIL("", "Will be fixed next version", Continue);
QCOMPARE(i, 42);
В обоих случаях выше, unit test работает, и я надеюсь, что это произойдет. Я что-то пропустил в JUnit?