Могу ли я запустить одиночный модульный тест из командной строки для проекта Grails? - PullRequest
34 голосов
/ 10 сентября 2010

Я выполняю свои модульные тесты Grails, набрав grails test-app :unit, который запускает все модульные тесты.Есть ли способ указать один тест?

Редактировать: Пока все в основном говорят одно и то же, но когда я это делаю, тесты не запускаются.Есть еще мысли?

Вывод: ОК, я использовал имя тестового класса, а не имя тестируемого класса.Однажды я попробовал Foo вместо FooTests, он отлично работал.

Ответы [ 5 ]

40 голосов
/ 17 сентября 2010

Возможности вещей, которые могут быть неправильными в вашей настройке:

  • Ваш командный порядок неверен.Что работает для меня:

    grails test-app -unit Foo (где мой тестовый класс FooTests.groovy)

  • Вы явно не импортируете grails.test.GrailsUnitTestCase.

    У меня были некоторые проблемы с распознаванием моих тестов, когда я их не импортировал.Когда я расширял GroovyTestCase, казалось, что все работает нормально.

Рабочий пример

Вот примерный набор тестов, которые работают для меня.Возможно, вы можете заметить некоторые различия между ними и вашими тестами?

Примечание. Все они запускаются с установленным плагином testing

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
    }
}

команда: все модульные тесты

$ 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

команда: 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

команда: my.pkg.Baz модульные тесты

$ 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

Я пробовал это в Grails 1.2.3 и Grails 1.3.4, оба вели себя одинаково.

12 голосов
/ 10 сентября 2010

да, есть

grails test-app -unit YourController.testSomething

, где YourController - это ваш контроллер, а testSomething - это метод теста.

Вы должны увидеть что-то вроде

Тесты пройдены - просматривать отчеты в

8 голосов
/ 10 сентября 2010

При наличии класса теста foo.BarTests вы можете запустить только тесты в этом классе, используя следующую команду:

grails test-app :unit foo.Bar

Или запустить один метод теста в этом классе, используя:

grails test-app :unit foo.Bar.testMethod

Обратите внимание, что вы не включаете слово "Тесты" при указании имени класса теста.

3 голосов
/ 05 февраля 2012

Это сработало бы наверняка, я использую его каждый день

Далее будет запускаться один тест

grails test-app :unit ExampleControllerTests.testName

После будет запускаться все ExampleControllerTests

grails test-app :unit ExampleControllerTests
3 голосов
/ 10 сентября 2010
grails test-app -unit com.package.YourController.testSomething

вам нужно указать имя пакета при запуске теста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...