Can I run a single unit test from the command line for a Grails project?

后端 未结 5 1674
借酒劲吻你
借酒劲吻你 2021-02-01 15:01

I\'ve been running my Grails unit tests by typing grails test-app :unit, which runs all unit tests. Is there a way to specify a single test?

Edit:<

相关标签:
5条回答
  • 2021-02-01 15:05

    Given a test class foo.BarTests you can run just the tests in that class using the following command:

    grails test-app :unit foo.Bar
    

    Or run a single test method within that class using:

    grails test-app :unit foo.Bar.testMethod
    

    Note that you do not include the word "Tests" when specifying the name of test class.

    0 讨论(0)
  • 2021-02-01 15:13
    grails test-app -unit com.package.YourController.testSomething
    

    you need to include the package name when you run the test

    0 讨论(0)
  • 2021-02-01 15:18

    Possibilities of things that might be wrong with your setup:

    • Your command order is incorrect. What works for me is:

      grails test-app -unit Foo (where my test class is FooTests.groovy)

    • You aren't explicitly importing grails.test.GrailsUnitTestCase.

      I had some problems with it recognizing my tests when I didn't import this. When I was extending GroovyTestCase, things seemed to work normally.

    Working Example

    Here's a sample set of tests that work for me. Perhaps you can spot some differences between them and your tests?

    Note: These are all run with the testing plugin installed

    test/unit/FooTests.groovy

    import grails.test.GrailsUnitTestCase
    class FooTest extends GrailsUnitTestCase {
        void testFoo() {
            assert true
        }
    
        void testBar() {
            assert true
        }
    }
    

    test/unit/BarTests.groovy

    import grails.test.GrailsUnitTestCase
    class BarTest extends GrailsUnitTestCase {
        void testFoo() {
            assert true
        }
    
        void testBar() {
            assert true
        }
    }
    

    test/unit/my/pkg/BazTests.groovy

    package my.pkg
    
    import grails.test.GrailsUnitTestCase
    
    class BazTest extends GrailsUnitTestCase {
        void testFoo() {
            assert true
        }
    
        void testBar() {
            assert true
        }
    }
    

    command: all unit tests

    $ 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
    

    command: Foo unit tests

    $ 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
    

    command: my.pkg.Baz unit tests

    $ 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
    

    I tried these in Grails 1.2.3 and Grails 1.3.4, both behaved the same.

    0 讨论(0)
  • 2021-02-01 15:21

    This would work for sure, I use it every day

    Following will run a single test

    grails test-app :unit ExampleControllerTests.testName
    

    Following will run all ExampleControllerTests

    grails test-app :unit ExampleControllerTests
    
    0 讨论(0)
  • 2021-02-01 15:28

    yes there is

    grails test-app -unit YourController.testSomething
    

    where YourController is your controller and testSomething is the test method.

    You should see something like

    Tests PASSED - view reports in

    0 讨论(0)
提交回复
热议问题