В этом посте я объясню, в чем основная разница между этими методами. Прежде всего, почему мы используем эти методы. Этот метод будет полезен, когда мы проверяем производительность наших методов или хотим узнать, сколько времени требуется для завершения нашего метода.
Сначала мы должны дать время нашему тестовому методу, после этого эти тесты выполняют операции в тесте. Если эта операция займет больше времени, чем указано, то этот тест завершится неудачей.
Хорошо, теперь мы знаем, что это за методы и почему мы используем их в наших методах тестирования. Тогда мы должны знать разницу.
Позвольте мне объяснить вкратце. Метод AssertTimeout подсчитывает время, которое мы даем. Если наш тестовый метод занимает больше времени, чем указано, этот тест завершится неудачно после завершения всех операций. Однако если метод AssertTimeoutPreemptivity занимает больше времени, чем указано, этот метод немедленно завершится ошибкой. И он не будет ждать завершения всех процессов, мы проверим это в проекте на следующем этапе.
Сначала откройте свою любимую IDE. Я открываю Intellij Idea, потому что эта IDE очень популярна среди Java-разработчиков. Конечно, вы можете использовать любимую IDE, такую как Eclipse, Netbeans, какую вы предпочитаете.
Теперь создайте новый проект Maven и добавьте эти две зависимости в файл pom.xml.
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
После добавления откройте папку src/test/java и
Создайте новый класс и дайте ему любое имя, которое вы хотите, я дам TimeoutTest.
Создайте 2 тестовых метода, один из них проверяет AssertTimeout, а другой проверяет AssertTimeoutPreemptivity.
После этого я указываю продолжительность и добавляю простое печатное сообщение.
Я добавляю метод Thread.sleep(), и поток переходит в режим сна 8000 мс (8 секунд). Но эти два метода потерпят неудачу, поскольку эти методы занимают больше 3 секунд. Позвольте мне протестировать эти методы, чтобы лучше понять.
И вы видите, что метод testAssertTimeout занимает 8 с 3 мс, потому что этот метод ожидает завершения всех операций, а другой занимает 3 с 45 мс, и он не ждет завершения другого процесса , он немедленно терпит неудачу.
Вы можете видеть сообщение, метод testAssertTimeout печатает сообщение, но метод AssertTimeoutPreemptivity не печатает сообщение, он игнорирует другие операции.
В этом посте мы говорили об основной разнице между AssertTimeout и AssertTimeoutPreemptivity.
Наконец-то код доступен на Github.
Берегите себя, до скорой встречи.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3