根据文件输出c#

时间:2018-06-04 15:12:43

标签: c# bdd specflow

我有多个csv文件。执行批处理命令后,将填充这些csv文件。我正在使用specflow BDD。

我为我的'然后'编写代码。步。我所采用的方法是在我的功能文件中,我使用了一个示例表来说明不同类型的状态(见下文)。我在编写执行文件路径的代码时遇到问题,然后再次验证我的预期数据。

所以,我已经为我的Then步骤编写了代码。我已经说明了processFilePath,它指出了我的文件所在的路径。我想现在放一段能够捕获processFilePath和包含多个文件名的路径的代码。例如,xxx_ccx.csv.ovrr,xxx_bbx.csv.ovrr,xxx_aax.csv.ovrr。

文件处理完毕后,我想验证我的结果。

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

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

以下是我期待的文件名和预期输出。我如何进行验证,这样当我在输出下面的文件可以根据预期的输出数据进行验证。

("xxx_txrbf_xxxx.csv.ovr", "6677,6677,1001,6"),
            ("xxx_tsxbf_xxxx.csv.ovrr", "6677,6677,3001,6"),
            ("xxx_tzxbf_xxxx.csv.ovrr", "6677,6677,2001,6")]")


 Assert.AreEqual(expected, actual);

    }

1 个答案:

答案 0 :(得分:0)

首先。

路径应由C#中的DirectoryInfo处理。

应该通过DirectoryInfo检索文件,以保存FileInfo类。

使处理文件和搜索文件等变得如此简单。

F.X。

 string expectedPath = @"C:\Expected";

        string path = @"C:\Test";
        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] files = di.GetFiles();
        DirectoryInfo diExpected = new DirectoryInfo(expectedPath);
        FileInfo[] expectedFiles = diExpected.GetFiles();

        for (int index = 0; index < files.Length; index++)
        {
            FileInfo currentFile = files[index];
            FileInfo currentExpectedFile = expectedFiles[index];
            //Expected data, should match "index" data location.
            Assert.AreEqual(currentFile.FullName, currentExpectedFile.FullName);

            //If you want to assert content:
            string actualContent = File.ReadAllText(currentFile.FullName);
            string expectedContent = File.ReadAllText(currentExpectedFile.FullName);
            Assert.AreEqual(actualContent, expectedContent);

        }

我不熟悉BBD和specflow内容,但我认为您可以修改我的示例以符合您的要求? 这样您预期文件的内容将与您的实际结果内容相匹配:

var actual = Common.LinuxCommandExecutor
                           .RunLinuxcommand($"cat {processFilePath}{path}");

命令。

您还应该断言您的预期文件数与实际文件数相同。