下面我粘贴了我的代码。我正在验证一项措施。我编写了将读取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);
}
答案 0 :(得分:4)
看起来你正在使用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);
}
通常,您不希望编写跨越代码边界的单元测试(读取文件,访问数据库等),因为这些测试往往很脆弱且难以维护。我不确定您的代码的目的,但似乎您可能正在尝试解析数据以检查其有效性。如果是这种情况,您可以编写一系列测试,以确保在为您的生产代码(解析器)提供字符串输入时,您将获得符合您预期的输出。 e.g。
[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);
}