Я не знаю, какие отдельные инструменты, чтобы справиться с этим, но JUnit имеет дополнительный параметр, называемый тайм-аут в @Test -annotation:
Второй необязательный параметр, тайм-аут, вызывает тест для отказа, если он занимает больше времени, чем указанное количество часов (измеряется в миллисекундах). Следующий тест не пройден:
@Test(timeout=100) public void infinity() {
while(true);
}
Таким образом, вы можете написать дополнительные юнит-тесты, чтобы проверить, что некоторые части работают «достаточно быстро». Конечно, вам нужно как-то сначала решить, какой максимальный период времени требуется для выполнения конкретной задачи.
-
Если второй вопрос актуален, то вот те вопросы, которые я см:
- Изменчивость в зависимости от окружающей среды, она выполняется на.
Там всегда будет некоторая изменчивость, но свести его к минимуму, я бы использовал Хадсон или подобный автоматизированный тестовый сервер здания & для запуска тестов, так что среда будет такой же, каждый раз, когда (конечно, если сервер, на котором запущен Hudson, также выполняет все другие виды задач, эти другие задачи все равно могут повлиять на результаты). Вы должны принять это во внимание при определении максимального времени работы для тестов (оставьте «головную комнату», поэтому, если тест займет, скажем, 5% больше, чем обычно, он все равно не сгорит сразу) ,
- Как обнаружить изменения, так как микро тесты в Java имеют большой разброс.
Microbenchmarks в Java редко надежны, я бы сказал, что тест больше ломти с интеграцией тестов (например, обработка один HTTP-запрос или то, что когда-либо у вас есть) и измерить общее время. Если тест завершился неудачно из-за слишком большого количества времени, изолируйте проблемный код путем профилирования или измерения и выключения времени выполнения отдельных частей теста во время тестового прогона, чтобы увидеть, какая часть занимает наибольшее время.
- Если суппорт собирает результаты, как получить результаты из суппорта, так что они могут быть сохранены в пользовательском формате. Отсутствует документация Caliber's .
К сожалению, я ничего не знаю про суппорт.
Я вижу один вопрос: «Есть ли уже существующая библиотека, которая делает это уже?». Это * * вопрос? –
Это один вопрос. Если этого не происходит, и мне нужно сворачивать свои проблемы, какие проблемы нужно решать. Я немного изменю вопрос. –
Недостаток Caliper * все *, из которого я извиняюсь и обещаю меняться в ближайшие месяцы. –