Я не знаю каких-либо отдельных инструментов для обработки этого, но JUnit имеет необязательный параметр с именем timeout в аннотации @ Test :
Второй необязательный параметр timeout вызывает сбой теста, если он занимает больше времени, чем указанное количество часов (измеряется в миллисекундах).Следующий тест не пройден:
@Test(timeout=100) public void infinity() {
while(true);
}
Таким образом, вы можете написать дополнительные юнит-тесты, чтобы проверить, что определенные части работают «достаточно быстро».Конечно, вам сначала нужно как-то решить, какое максимальное время должно занять определенное задание.
-
Если второй вопрос актуален, тоВот проблемы, которые я вижу:
- Изменчивость в зависимости от среды, в которой он запущен.
Всегда будет некоторая изменчивость, но чтобы минимизировать ееЯ бы использовал Hudson или аналогичный автоматизированный сервер построения и тестирования для запуска тестов, поэтому среда всегда будет одинаковой (конечно, если сервер, на котором запущен Hudson, также выполняет все другие виды задач, эти другие задачи все еще могут влиятьрезультаты, достижения).Вы должны принять это во внимание при определении максимального времени выполнения тестов (оставьте некоторую «запасную часть», так что, если тест занимает, скажем, 5% больше, чем обычно, он все равно не провалится сразу).
- Как обнаруживать изменения, поскольку микропроцессоры в Java имеют большие расхождения.
Микропрепараты в Java редко бывают надежными, я бы сказалтестируйте большие блоки с помощью интеграционных тестов (таких как обработка одного http-запроса или чего-либо еще) и измеряйте общее время.Если тест не пройден из-за того, что он занимает слишком много времени, изолируйте проблемный код с помощью профилирования или измерьте и зарегистрируйте время выполнения отдельных частей теста во время выполнения теста, чтобы увидеть, какая часть занимает наибольшее количество времени.
- Если Caliper собирает результаты, как получить результаты из Caliper, чтобы их можно было сохранить в произвольном формате.Документация калибра отсутствует.
К сожалению, я ничего не знаю о калипере.