unit-testing - ejemplo - que es junit
¿Puedo ejecutar una prueba de unidad única desde la línea de comandos para un proyecto de Grails? (5)
Dada una clase de prueba foo.BarTests , puede ejecutar solo las pruebas en esa clase usando el siguiente comando:
grails test-app :unit foo.Bar
O ejecute un único método de prueba dentro de esa clase usando:
grails test-app :unit foo.Bar.testMethod
Tenga en cuenta que no incluye la palabra "Pruebas" cuando especifica el nombre de la clase de prueba.
He estado ejecutando mis pruebas de la unidad Grails al escribir grails test-app :unit
, que ejecuta todas las pruebas unitarias. ¿Hay alguna forma de especificar una sola prueba?
Editar: Hasta ahora, todo el mundo básicamente dice lo mismo, pero cuando lo hago, no se ejecutan pruebas. ¿Alguna idea más?
Conclusión: OK, estaba usando el nombre de la clase de prueba, en lugar del nombre de la clase que se está probando. Una vez que probé Foo
lugar de FooTests
funcionó perfectamente.
Esto funcionaría con seguridad, lo uso todos los días
A continuación se ejecutará una única prueba
grails test-app :unit ExampleControllerTests.testName
A continuación, se ejecutarán todos los controles ExampleController
grails test-app :unit ExampleControllerTests
sí hay
grails test-app -unit YourController.testSomething
donde YourController es su controlador y testSomething es el método de prueba.
Deberías ver algo como
Pruebas APROBADAS: ver informes en
Posibilidades de cosas que podrían estar mal con tu configuración:
Tu orden de comando es incorrecta. Lo que funciona para mí es:
grails test-app -unit Foo
(donde mi clase de prueba esFooTests.groovy
)No está importando explícitamente
grails.test.GrailsUnitTestCase
.Tuve algunos problemas al reconocer mis pruebas cuando no importé esto. Cuando extendía
GroovyTestCase
, las cosas parecían funcionar normalmente.
Ejemplo de trabajo
Aquí hay un conjunto de pruebas de muestra que me funcionan. ¿Quizás pueda detectar algunas diferencias entre ellos y sus pruebas?
Nota: Todos estos se ejecutan con el plugin de testing
instalado
prueba / unidad / FooTests.groovy
import grails.test.GrailsUnitTestCase
class FooTest extends GrailsUnitTestCase {
void testFoo() {
assert true
}
void testBar() {
assert true
}
}
prueba / unidad / BarTests.groovy
import grails.test.GrailsUnitTestCase
class BarTest extends GrailsUnitTestCase {
void testFoo() {
assert true
}
void testBar() {
assert true
}
}
prueba / unidad / mi / paquete / BazTests.groovy
package my.pkg
import grails.test.GrailsUnitTestCase
class BazTest extends GrailsUnitTestCase {
void testFoo() {
assert true
}
void testBar() {
assert true
}
}
comando: todas las pruebas unitarias
$ grails test-app -unit
...
Starting unit test phase ...
-------------------------------------------------------
Running 6 unit tests...
Running test my.pkg.BazTest...PASSED
Running test FooTest...PASSED
Running test BarTest...PASSED
Tests Completed in 847ms ...
-------------------------------------------------------
Tests passed: 6
Tests failed: 0
-------------------------------------------------------
...
Tests PASSED - view reports in target/test-reports
comando: pruebas de la unidad Foo
$ grails test-app -unit Foo
...
Starting unit test phase ...
-------------------------------------------------------
Running 1 unit test...
Running test FooTest...PASSED
Tests Completed in 815ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------
...
Tests PASSED - view reports in target/test-reports
comando: my.pkg.Baz pruebas de unidad
$ grails test-app -unit my.pkg.Baz
...
Starting unit test phase ...
-------------------------------------------------------
Running 2 unit tests...
Running test my.pkg.BazTest...PASSED
Tests Completed in 842ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------
...
Tests PASSED - view reports in target/test-reports
Intenté estos en Grails 1.2.3 y Grails 1.3.4, ambos se comportaron igual.
grails test-app -unit com.package.YourController.testSomething
necesita incluir el nombre del paquete cuando ejecuta la prueba