测试验证 C#

J O*_*ock 0 c# testing nunit

下面我粘贴了我的代码。我正在验证一项措施。我已经编写了读取 Linux 文件的代码。但如果我想在这里传递多个文件名,这可能吗?例如,我可以做一个循环,而不是只验证一个文件,这样它就可以一次性准备好多个文件。

一旦文件被读取并继续,我就返回actualItemData。在我的下一个方法中,我想对此进行调用,actualItemData以便数据发布在我的var actual

   public string validateMeasurement
    {
        var processFilePath = **"/orabin/app/oracle/inputs/ff/ff/actuals/xx_ss_x.csv.ovr";**
        var actualItemData = Common.LinuxCommandExecutor.
            RunLinuxcommand("cat " + processFilePath);

        **return actualItemData;** 
    }

    public void validateInventoryMeasurementValue(string Data, string itemStatus)
    {

        var expected = '6677,6677_6677,3001,6';

        **var actual = actualItemData);**


        Assert.AreEqual(expected, actual);
    }
Run Code Online (Sandbox Code Playgroud)

And*_*rew 5

看来您正在使用 msunit。据我所知它不支持测试用例。如果您要使用 nunit,您将能够使用 TestCase 属性来完成此操作。

[TestCase("myfile1.txt", "6677,6677_6677,3001,6")]
[TestCase("myfile2.txt", "1,2,3")]
public void mytest(string path, string expected) 
{
    var actual = Common.LinuxCommandExecutor.
        RunLinuxcommand("cat " + path);

    Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

通常,您不想编写跨越代码边界(读取文件、访问数据库等)的单元测试,因为这些测试往往很脆弱且难以维护。我不确定您的代码的目的,但看来您可能正在尝试解析数据以检查其有效性。如果是这种情况,您可以编写一系列测试,以确保当您的生产代码(解析器)获得字符串输入时,您会得到符合您期望的输出。例如

[Test()]
public void Parse_GivenValidDataFromXX_S_X_CSV_ShouldReturnTrue(string filename) 
{
  // Arrange
  var parser = CreateParser(); // factory function that returns your parser
  // Act
  var result = parser.Parse("6677,6677_6677,3001,6");
  // Arrage
  Assert.IsTrue(result);
}
Run Code Online (Sandbox Code Playgroud)