Только для forgetting-dispose проблемы, попробуйте решение, описанное в этом сообщении в блоге . Вот сущность:
public void Dispose ()
{
// Dispose logic here ...
// It's a bad error if someone forgets to call Dispose,
// so in Debug builds, we put a finalizer in to detect
// the error. If Dispose is called, we suppress the
// finalizer.
#if DEBUG
GC.SuppressFinalize(this);
#endif
}
#if DEBUG
~TimedLock()
{
// If this finalizer runs, someone somewhere failed to
// call Dispose, which means we've failed to leave
// a monitor!
System.Diagnostics.Debug.Fail("Undisposed lock");
}
#endif
Вы можете @Ignore перед методом тестирования. В этом случае от исполнителя тестов зависит, какой результат вы получите. Вы можете получить что-то вроде успешного выполнения 25 тестов, а 6 тестов игнорируются ...
Все дальнейшее зависит от того, как вы хотите запускать модульные тесты.
Большинство бегунов JUnit, которых я видел, дают вам один из четырех статусов для тестового примера: пройден, не пройден, имел ошибки или проигнорирован.
Как и были ошибки (возникло исключение), сообщается аналогичным образом как сбой («красный результат»), нет хорошего способа сгенерировать предупреждение и по-прежнему иметь «зеленый результат» - я полагаю, это именно то, что вы ищете?
Как упомянул Януш , вы можете использовать атрибут @Ignore
, чтобы игнорировать тестовый пример, который также может содержать сообщение:
@Ignore("disabled until implementation is finished")
public void testMe() {
//do something
}
Большинство бегунов не будут перечислять их явно в результатах, но вы можете искать любые игнорируемые тестовые примеры автоматически с использованием инструментов, путем поиска атрибута @Ignore
и последующего создания отчета,в котором перечислены все пропущенные тестовые примеры и причина (указанная в атрибуте).
Вы можете создать исключение NotImplementedException в ваших новых методах:
Apache Commons NotImplementedException
, например,
public String getName() {
throw new NotImplementedException("Oh so soon...");
}
, а затем указать в своем тесте JUnit, что это исключение следует ожидать:
@Test (expected=NotImplementedException.class)
public void testGetName() {
myKingdom.getName();
}
Это служит напоминанием всем о необходимости реализовать эту функциональность, конечно, когда они добавят ее (или удалят по ошибке), модульный тест заметит, что исключение больше не генерируется, и вызовет большую шаткость.
Модульное тестирование лучше всего работает, когда тесты заполнены, то есть они что-то делают, а в случае сбоя что-то не так. таким образом, они не предназначены для «полуотвода» или «успешного прохождения с предупреждением».
Это потому, что модульные тесты предназначены для тестирования. Таким образом, когда они терпят неудачу, что-то не так.
Не было бы лучше не использовать тесты для отслеживания того, что еще не реализовано, а использовать тесты для проверки функциональности, там.
Итак, те тесты, которые в настоящее время тестируются функциональность, которой нет, вероятно, не должна выполняться до тех пор, пока она не появится.