当前位置:  开发笔记 > Android > 正文

单元测试用于比较NUnit中的文本文件

如何解决《单元测试用于比较NUnit中的文本文件》经验,为你挑选了1个好方法。

我有一个类处理2 xml文件并生成一个文本文件.

我想写一堆单元/集成测试,可以单独传递或失败,以便执行以下操作:

    对于输入A和B,生成输出.

    将生成的文件的内容与内容预期输出进行比较

    当实际内容与预期内容不同时,将失败并显示有关差异的一些有用信息.

下面是该课程的原型以及我在单元测试中的第一次尝试.

是否有我应该用于此类测试的模式,还是人们倾向于编写数以万亿的TestX()函数?

有没有更好的方法来哄骗NUnit的文本文件差异?我应该嵌入文本文件diff算法吗?


class ReportGenerator
{
    string Generate(string inputPathA, string inputPathB)
    {
        //do stuff
    }
}

[TextFixture]
public class ReportGeneratorTests
{
     static Diff(string pathToExpectedResult, string pathToActualResult)
     {
         using (StreamReader rs1 = File.OpenText(pathToExpectedResult))
         {
             using (StreamReader rs2 = File.OpenText(pathToActualResult))
             {
                 string actualContents = rs2.ReadToEnd();
                 string expectedContents = rs1.ReadToEnd();                  

                 //this works, but the output could be a LOT more useful.
                 Assert.AreEqual(expectedContents, actualContents);
             }
         }
     }

     static TestGenerate(string pathToInputA, string pathToInputB, string pathToExpectedResult)
     {
          ReportGenerator obj = new ReportGenerator();
          string pathToResult = obj.Generate(pathToInputA, pathToInputB);
          Diff(pathToExpectedResult, pathToResult);
     }

     [Test]
     public void TestX()
     {
          TestGenerate("x1.xml", "x2.xml", "x-expected.txt");
     }

     [Test]
     public void TestY()
     {
          TestGenerate("y1.xml", "y2.xml", "y-expected.txt");
     }

     //etc...
}

更新

我对测试diff功能不感兴趣.我只是想用它来产生更多可读的失败.



1> Adam Tegen..:

对于使用不同数据的多个测试,请使用NUnit RowTest扩展:

using NUnit.Framework.Extensions;

[RowTest]
[Row("x1.xml", "x2.xml", "x-expected.xml")]
[Row("y1.xml", "y2.xml", "y-expected.xml")]
public void TestGenerate(string pathToInputA, string pathToInputB, string pathToExpectedResult)
 {
      ReportGenerator obj = new ReportGenerator();
      string pathToResult = obj.Generate(pathToInputA, pathToInputB);
      Diff(pathToExpectedResult, pathToResult);
 }

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有