2013-05-08 3 views
2

Есть ли способ запустить конкретный тест по спецификациям 2 Specification? например Если у меня есть следующие:Выполнение индивидуального теста по спецификации

class FooSpec extends Specification { 
    "foo" should { 
    "bar" in { 
     // ... 
    } 

    "baz" in { 
     // ... 
    } 
    } 
} 

Я хотел бы иметь возможность работать только FooSpec > "foo" > "bar" (используя некоторые произвольные обозначения здесь).

ответ

5

Вы можете использовать ex аргумент от SBT запустить конкретный пример:

sbt> test-only *FooSpec* -- ex bar 

Вы можете также смешать в характеристика org.specs2.mutable.Tags и включают специальную метку:

sbt> test-only *FooSpec* -- include investigate 

class FooSpec extends Specification with Tags { 
    "foo" should { 
    tag("investigate") 
    "bar" in { 
     // ... 
    } 
    "baz" in { 
     // ... 
    } 
    } 
} 

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

sbt> test-only *FooSpec* -- was x 

Наконец, в следующей версии 2.0 (или с использованием новейших 1.15-Snapshot), вы сможете создать script.Specification и использовать «авто-пронумерованные примеры групп»:

import specification._ 

/** 
* This kind of specification has a strict separation between the text 
* and the example code 
*/ 
class FooSpec extends script.Specification with Groups { def is = s2""" 
    This is a specification for FOO 

    First of all, it must do foo 
    + with bar 
    + with baz 

    """ 

    "foo" - new group { 
    eg := "bar" must beOk 
    eg := "baz" must beOk 
    } 
} 

// execute all the examples in the first group 
sbt> test-only *FooSpec* -- include g1 

// execute the first example in the first group 
sbt> test-only *FooSpec* -- include g1.e1 

Там нет, однако, нет способа определить, с изменяемой спецификацией, что вы хотите, чтобы запустить пример "foo"/"bar". Это может быть возможностью добавить в будущем.

+0

как сделать это в scala IDE? – zinking

1

Вы можете выбрать пространство имен тестов, которые должны быть выполнены, но AFAIK нет возможности запустить конкретный тест из sbt console. Вы можете сделать что-то вроде:

sbt test:compile "test-only FooSpec.*", который запускает тесты только из пространства имен FooSpec, но этот выбор основан на пространстве имен и даже не работает нормально. Это механизм выбора, но он как-то терпит неудачу и всегда выполняет весь набор тестов, найденных в вашем проекте.

Update

От official documentation:

test-only

Тест-единственная задача принимает пробельные отделенный список имен тестов для запуска. Например:

test-only org.example.MyTest1 org.example.MyTest2 

Он поддерживает подстановочные знаки, а также:

test-only org.example.*Slow org.example.MyTest1 
+0

Это позволяет мне перейти на уровень «FooSpec», но не глубже. – missingfaktor

Смежные вопросы