Пройдите неудачные тесты JUnit, которые фактически не запускают утверждение - PullRequest
4 голосов
/ 24 февраля 2011

Моя команда работает над обучением некоторых наших разработчиков тестированию. Они понимают, зачем писать тесты, и готовы писать тесты, но им не хватает хороших тестов.

Я только что увидел коммит, подобный этому

public void SomeTest{

@Test
public void testSomething{
 System.out.println(new mySomething.getData());
}

Таким образом, они, по крайней мере, убедились, что их код дал им ожидаемый результат, посмотрев.

Пройдет немного времени, прежде чем мы действительно сможем продать идею обзоров кода. В то же время я думал о том, чтобы JUnit провалил любые тесты, в которых нет фактического assertXXX, или операторы сбоя. Затем я хотел бы, чтобы в этом сообщении о сбое говорилось что-то вроде: «Ваши тесты должны использовать утверждения и фактически проверять вывод!».

Я полностью ожидаю, что это приведет к таким вызовам, как assertTrue(1 == 1);. Мы работаем над созданием команды для правильного тестирования и проверки кода, есть ли какие-то технические механизмы, которые мы можем использовать, чтобы облегчить жизнь разработчикам, которые уже ее получили? А как насчет технических механизмов, чтобы помочь новым парням понять?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Я думаю, вы должны рассмотреть организационные изменения: наставничество, обучение, проверки кода.

Инструменты могут помочь вам, только если вы используете их добросовестно с базовым пониманием целей. Если один из них отсутствует, он вам не поможет.

Люди просто умны, чтобы делать дампы или обходить метрики. Я думаю, что ваша оценка не верна, что «они» на борту, если они не могут написать ни одного полезного теста. Автоматические инструменты на данном этапе просто не правильные инструменты. Вы не можете узнать, когда программа говорит, что делать дальше.

1 голос
/ 24 февраля 2011

Вы можете использовать некоторый статический анализатор кода.

Я использую PMD , который включает набор правил JUnit .Существует множество плагинов IDE , которые будут отмечать нарушения правил в IDE.Вы можете настроить наборы правил в соответствии со своими потребностями.

Вы также получите выгоду от других наборов правил, которые будут предупреждать вас о нарушениях стиля кода / передовой практики (хотя иногда вам приходится решать, используется ли инструмент или выдурак: -)).

0 голосов
/ 25 января 2017

, чтобы ответить на поставленный вопрос для будущих зрителей.

JUnit использует отражение для запуска тестируемой функции, если какое-либо Исключение, Ошибка выдает -> тест не пройден, в противном случае успешно.Класс Assert - это просто класс утилит.

...