En esta publicación de blog, explicaré cuál es la principal diferencia entre estos métodos. En primer lugar, ¿por qué utilizamos estos métodos? Este método será útil cuando probemos el rendimiento de nuestros métodos o queremos saber cuánto tiempo tarda nuestro método en completarse.
Primero tenemos que darle tiempo a nuestro método de prueba, luego de eso estas pruebas ejecutan operaciones en la prueba. Si esta operación lleva más tiempo del especificado, esta prueba fallará.
Bien, ahora sabemos cuáles son estos métodos y por qué los usamos en nuestros métodos de prueba. Entonces debemos saber la diferencia.
Déjame explicarte brevemente. El método afirmarTimeout cuenta el tiempo que le damos; si nuestro método de prueba tarda más de lo especificado, esta prueba fallará después de que se completen todas las operaciones. Sin embargo, si el método afirmarTimeoutPreemptively tarda más de lo especificado, este método fallará inmediatamente. Y no esperará a que se completen todos los procesos; lo probaremos en el proyecto en el siguiente paso.
Primero abre tu IDE favorito. Abro Intellij Idea porque este IDE es muy popular entre los desarrolladores de Java. Por supuesto, puede utilizar su IDE favorito, como Eclipse o Netbeans, cuál prefiera.
Ahora cree un nuevo proyecto Maven y agregue estas 2 dependencias a su archivo pom.xml.
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
Después de agregarlos, abra la carpeta src/test/java y
Crea una nueva clase y dale el nombre que quieras. Le daré TimeoutTest.
Cree 2 métodos de prueba, uno de ellos prueba afirmarTimeout y el otro prueba afirmarTimeoutPreemptivemente.
Después de eso, doy la duración y agrego un mensaje impreso simple.
Agrego el método Thread.sleep() y Thread duerme 8000 ms (8 segundos). Pero estos 2 métodos fallarán porque tardan más de 3 segundos. Permítanme probar estos métodos para comprender mejor.
Y ves que el método testAssertTimeout tarda 8s 3ms porque este método espera para completar todas las operaciones, pero el otro tarda 3s 45ms y no espera para completar otro proceso. , falla inmediatamente.
Puedes ver que el método testAssertTimeout imprime el mensaje, pero el método afirmarTimeoutPreemptively no imprime el mensaje, ignoró otras operaciones.
En esta publicación hablamos sobre la principal diferencia entre afirmarTimeout y afirmarTimeoutPreemptivemente.
Por fin, el código está disponible en Github.
Cuídate, nos vemos pronto.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3