Одной из проблем руководства группы является то, что люди в команде (иногда даже включая меня) часто создают тесты JUnit без какой-либо функциональности тестирования.Отчет JUnit показывает функциональность тестирования, а не покрытие
Это легко сделать, поскольку разработчики используют свой тест JUnit в качестве упряжи для запуска части приложения, которую они кодируют, а затем либо намеренно, либо забывчиво просто проверяют ее без каких-либо утвердительных тестов или макетов.
После этого становится забыто, что тесты являются неполными, но они проходят и производят отличное покрытие кода. Запуск приложения и подача данных через него создадут высокие показатели покрытия кодов от Cobertura или Jacoco, но все же ничего не проверяется, кроме его способности работать без взрыва, - и я даже видел, что работала с большими блоками try-catch в тест.
Есть ли инструмент отчетности, который будет тестировать тесты, так что мне не нужно часто проверять тестовый код?
Я был временно рад найти Jester, который тестирует тесты, изменяя тестируемый код (например, предложение if) и повторно запуская его, чтобы проверить, не нарушает ли он тест.
Однако это не то, что вы могли бы настроить для запуска на сервере CI - он требует настройки в командной строке, не может работать без отображения его графического интерфейса, только печатает результаты в графическом интерфейсе, а также принимает возрасты бежать.
Можете ли вы привести конкретный пример того, что именно вы пытаетесь поймать? То есть пример, где покрытие кода теста велико, но качество теста плохое. – EJK
Не можете ли вы добавить чек в контрольный список проверки кода, который проверяет модульные тесты для утверждений и фактически что-то тестирует? Я считаю, что автоматизированные решения - это сложный способ решения этой проблемы, но простой дополнительный шаг в этом процессе может быть более чем достаточным для изучения и предотвращения этой ситуации. –