如何对文件或文档进行单元测试?

时间:2018-08-07 04:12:14

标签: c# unit-testing xunit

首先,我是新手,如果这个问题不合适,我会道歉。

在我正在研究的项目中,有一种创建文档(.RTF)的方法。传递参数后,我从此方法获取rtfString。我需要测试的是所创建文档的页码。由于此方法的输出是字符串,因此我正在将其转换为存储在我的计算机上的文档。然后,我手动打开文档并检查编号。

这是我用来将字符串转换为文档的代码。输出是rtfString。

string outputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "testHtmlToRtf.rtf");
if (System.IO.File.Exists(outputPath))
{
    System.IO.File.Delete(outputPath);
}
System.IO.File.WriteAllText(outputPath, output);

我觉得这不是一个很好的测试方法。但是我不知道该怎么办。请任何人就这个问题给我一些建议或好的教程。

这是我的测试用例。但是我认为这没有用。

public void PageNumberingTest()
{
    //Arrange
    string htmlContent = "<div>This is test content.</div>";
    string header = "<div>test header</div>";
    string footer = "<div>test footer</div>";

    //Act
    var output = _rtf.ConvertToString(htmlContent, header, footer);

    //Assert
    //To run the tests uncomment following code
    string outputPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "testHtmlToRtf.rtf");
    if (System.IO.File.Exists(outputPath))
    {
        System.IO.File.Delete(outputPath);
    }

    System.IO.File.WriteAllText(outputPath, output);
    output.ShouldNotBeNull();
} 

2 个答案:

答案 0 :(得分:1)

在您的应用基于标准生成文件的情况下,最好在已知数量的其他应用中打开文件。否则,您只是在编写不知道是否正确的测试,以测试您不知道正确或不正确的人工制品。未知数太多。

由于它是RTF,因此可以在已建立的应用程序中查看文件,无论它是写字板还是 Microsoft Word 。这是我过去所做的,并且效果很好。

如果您是根据协议进行开发的话,也可以这样说-确保您可以断言字节似乎正确,但是直到尝试与另一个应用程序交谈之前,您还是不确定。

  

我觉得这不是一个很好的测试方法。

有些测试是手动的,要么太难,要么无法自动测试。为此,编写单元测试代码可以说是不明智的,应该用我所说的已知应用替换为手动测试。

答案 1 :(得分:1)

您可以使用它进行测试

MsTest

Nunit Testing

XUnit Testing

最后,您可以使用断言适量执行所需的操作。

  Assert.NotNull(output)

  Assert.Equal(Expected,output)