Проблема с автоматизацией шага «Тогда» BDD C # Specflow - PullRequest
0 голосов
/ 04 июня 2018

Я запускаю тест, в котором я проверяю вывод из файла (например, irm_xxx_lkdd_xuxt.csv.ovr) с моим ожидаемым выводом "6677,6677_6677,3001,6"

Проблема, которую я 'у меня есть мой код ниже, не распознается мой шаг «Тогда» specflow.Я думаю, что проблема может быть в том, что я использую тестовый набор Nunit.Есть ли способ обойти это?или я могу объединить свой путь к файлу и ожидаемый результат в моем методе ValidateMeasurement

    [Then("Transfer measure should be generated for (.*)")]


[TestCase("irm_xxx_lkdd_xuxt.csv.ovr", "6677,6677_6677,3001,6")]
[TestCase("irm_xxx_lkdd_fcvt.csv.ovrr", "6677,6677_6677,3001,6")]
[TestCase("irm_xxx_lkdd_fbvt.csv.ovrr", "6677,6677_6677,3001,6")]

public void ValidateMeasurement(string path, string expected)
{
    const string processFilePath = "/orabin/app/product/inputs/ff/actuals/";
    var actual = Common.LinuxCommandExecutor
                       .RunLinuxcommand($"cat {processFilePath}{path}");

    Assert.AreEqual(expected, actual);

}



Given I Loaded LifeCycle Measurement for Current
And Inventory interface is generated 
When Inventory batch is executed
Then Transfer measure should be generated Current
Examples:
| Lifecyclestatus |
| PreNew          |
| New             |
| Current         |
| Clearance       |
| Old             |

1 Ответ

0 голосов
/ 04 июня 2018

Не смешивайте тестовые наборы 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);
    }
}
...