Не смешивайте тестовые наборы BDD и NUnit.Specflow генерирует тесты NUnit в фоновом режиме, но это не означает, что вы должны думать о BDD, поскольку он имеет какое-то отношение к юнит-тестам.
Ваши случаи должны быть скорее Examples
, поэтому они будут переведены в тестслучаи в фоновом режиме - но для вас это должно быть прозрачно, как это может быть любой другой двигатель за шторами.
Так что - не зная каких-либо дополнительных подробностей - я бы сделал это так:
Scenario Outline: My fantastic test with multiple cases
Given I have a <Path>
When I perform a test
Then the expected result is <Expected>
Examples:
| Path | Expected |
| irm_xxx_lkdd_xuxt.csv.ovr | 6677,6677_6677,3001,6 |
| irm_xxx_lkdd_fcvt.csv.ovrr | 6677,6677_6677,3001,6 |
| irm_xxx_lkdd_fbvt.csv.ovrr | 6677,6677_6677,3001,6 |
На шаге Given
вы можете сохранить любую конфигурацию (может быть, просто сохранение пути - слишком простой пример), шаг When
предназначен для выполнения фактического теста, и, наконец, на шаге Then
вы делаетеутверждения.
[Binding]
public class MyFantasticFeatureBindings
{
[Given("I have a (.*)")]
public void ConfigureTest(string path)
{
// setup any configuration here - actually it can be the expected value, too
ScenarioContext.Current.Set(path, nameof(path));
}
[When("I perform a test")]
public void DoTest()
{
// obtain configuration, do the test and store the results and possible errors
var path = ScenarioContext.Current.Get<string>("path");
var result = PerformTest(path); // TODO - you have to implement this
ScenarioContext.Current.Set(result, nameof(result));
}
[Then("the expected result is (.*)")]
public void Assertions(string expectedResult)
{
var actualResult = ScenarioContext.Current.Get<string>("result");
Assert.AreEqual(expectedResult, actualResult);
}
}