Поймать поддельные юнит-тесты на Java - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть тесты, в которых нет подтверждений в моем репо, хотя jacoco дает хорошее освещение. Есть ли способ обнаружить такие тесты, кроме как лучшие обзоры кода?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Если ваше намерение состоит только в том, чтобы найти тривиально неправильные тесты, а именно те, в которых отсутствует какое-либо утверждение assert, то могут выполнять такие проверки, как PMD. Скорее всего, вы получите некоторые ложные срабатывания, в частности, для тестов, где реальная цель теста состоит просто в том, чтобы убедиться, что SUT не выдает исключение (случай, упомянутый в комментариях Питера Лоури).

Однако в тестах гораздо больше проблем, которые не так просто найти: утверждение может быть просто неправильным (assertTrue(isPrime(9))), или утверждение может касаться только части соответствующих аспектов (например, когда работа с рациональными числами, проверка только числителя, но не знаменателя).

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

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

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

0 голосов
/ 14 ноября 2018

Используйте PMD.У него есть стандартное правило для юнит-тестов без утверждений.

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