如何将文件合并到 NUnit C# 中的文件夹路径

How to combine file to a folder path in NUnit C#

我使用 NUnit 测试用例编写了一个测试。我已经定义了文件名 'irm_xxx_tbbmf_xu.csv.ovr' 以及我希望该文件输出的数据。

我定义了一个变量 processFilePath,其中包含该文件所在的位置以及 NUnit TestCase 属性参数中的文件名。

我的问题是我编写 processFilePath 的方式 我该如何编写它以便它从 [NUnit.Framework.TestCase] 中找到我期望的文件名。目前它没有将两者结合起来。 Assert.AreEqual 会按照我写的方式工作吗?

[NUnit.Framework.TestCase("irm_xxx_tbbmf_xu.csv.ovr", "6677,6677_6677,3001,6")]
[NUnit.Framework.TestCase("irm_xxx_tbbmf_xxx.csv.ovr", "6677,22,344")]
public void ValidateInventoryMeasurement(string path, string expected)
{
    var processFilePath = "/orabin/product//inputs//actuals/";
    var actual = Common.LinuxCommandExecutor.
        RunLinuxcommand("cat " + path);

    Assert.AreEqual(expected, actual);
}

根据我的评论,在测试中找到要比较的文件时,您实际上并没有使用路径。 有多种组合文件路径的方法 - @juharr 建议使用 Path.Combine 是最佳实践(尤其是在 Windows 上),但你真的可以使用任何技术进行字符串连接 - 我使用过字符串在下面进行插值。

using System; // Other usings 
using NUnit.Framework;

namespace MyTests
{
....


[TestCase("irm_xxx_tbbmf_xu.csv.ovr", "6677,6677_6677,3001,6")]
[TestCase("irm_xxx_tbbmf_xxx.csv.ovr", "6677,22,344")]
public void ValidateInventoryMeasurement(string path, string expected)
{
    const string processFilePath = "/orabin/product/inputs/actuals/";
    var actual = Common.LinuxCommandExecutor
                       .RunLinuxcommand($"cat {processFilePath}{path}");

    Assert.AreEqual(expected, actual);
}

备注

  • 我假设被测系统是 Common.LinuxCommandExecutor
  • processFilePath路径不变,可以变成const string
  • 我已经清理了 double slashes //
  • 您可以在 NUnit .cs 文件的顶部添加一个 using NUnit.Framework,这样您就不需要重复完整的命名空间 NUnit.Framework.TestCase,即只需 [TestCase(..)]
  • 您可能需要注意 cat 输出中的无关空白。在这种情况下,您可以考虑:

  Assert.AreEqual(expected, actual.Trim());