Как отключить функцию в specflow (Gherkin), не удаляя ее?

У меня есть некоторые функции SpecFlow (с использованием синтаксиса Gherkin), и я хотел бы временно отключить эту функцию, чтобы предотвратить запуск ее тестов?

Есть ли атрибут, которым я могу пометить эту функцию? Я предполагаю, что что-то, что работает с Cucumber, может также работать со SpecFlow.


person Simon Keep    schedule 03.06.2010    source источник


Ответы (4)


Вы можете отметить эту функцию тегом @ignore:

@ignore @web
Scenario: Title should be matched
When I perform a simple search on 'Domain'
Then the book list should exactly contain book 'Domain Driven Design'
person jbandi    schedule 03.06.2010
comment
Круто, есть ли где-нибудь список атрибутов? - person Simon Keep; 03.06.2010
comment
Здесь мы говорим о тегах. @ignore - единственный предопределенный тег. Остальные теги могут быть свободно определены для управления обработчиками до и после и для выборочного запуска функций. - person jbandi; 03.06.2010
comment
Я бы посмотрел на код генератора, поскольку он дает наиболее точный ответ: github.com/techtalk/SpecFlow/blob/master/Generator/ Также есть журнал изменений SpecFlow github.com/techtalk/SpecFlow/blob/master/changelog.txt и процитирую: MsTest: поддержка атрибутов [Owner] и [WorkItem] MSTest с такими тегами, как \ @owner: foo \ @workitem: 123 (Issue 162, Pull 161) Однако список атрибутов зависит от тестовой среды и средства выполнения тестов, которое вы используете вместе со SpecFlow :) - person Borislav T; 15.02.2013
comment
Я обнаружил, что атрибут @ignore необходимо добавлять к каждому сценарию внутри функции. - person DanH; 26.05.2017
comment
@DanH, вы должны иметь возможность пометить всю функцию как @ignore - person nitzel; 27.10.2017

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

@ignore("reason for ignoring")

РЕДАКТИРОВАТЬ: по какой-то причине он ломается с пробелами, но это работает:

@ignore("reason")
person Xena    schedule 04.05.2016

Как предлагает jbandi, вы можете использовать тег @ignore.

Тег может применяться к:

  • единый сценарий
  • полная функция

Учитывая, что NUnit является поставщиком тестов, результатом в сгенерированном коде будет вставка

[NUnit.Framework.IgnoreAttribute ()]

к методу или классу.

person Be.St.    schedule 18.10.2013

Feature: CheckSample

@ignored
Scenario Outline: check ABC    #checkout.feature:2
Given I open the applciation
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
Examples:
| username | password |
| dude     | daad     |

рассмотрите выше как файл функции "CheckSample.feature"

А ниже - ваш пошаговый файл, это всего лишь частичный файл:

public class Sampletest {


@Given("^I open the applciation$")
public void i_open_the_applciation() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    //throw new PendingException();
}

Теперь ниже будет файл runner:

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = {"pretty", "html:target/reports", 
"json:target/reports/cucumber-report.json"},
        monochrome = true,
        tags = {"~@ignored"}
        )

public class junittestOne {

   public static void main(String[] args) {
        JUnitCore junit = new JUnitCore();
         Result result = junit.run(junittestOne.class);
   }

  }

Здесь важно отметить, что текст «@ignored» в файле функций упоминается в CucumberOptions (тегах) в файле класса «junittestone». Кроме того, убедитесь, что у вас есть все соответствующие файлы jar для огурца, корнишона, Junit и других, доступных в вашем проекте, и вы импортировали их в свои определения шагов (класс).

Поскольку «проигнорировано», сценарий будет пропущен при выполнении тестов.

person MKod    schedule 01.06.2017
comment
должно быть «проигнорировано» и «не» проигнорировано, иначе оно не будет проигнорировано. Извините, я не знаю, как написать здесь AT-символ. - person hogan; 19.01.2021