gpt4 book ai didi

c# - 如何测试一个没有返回值的函数?

转载 作者:太空狗 更新时间:2023-10-29 21:09:48 31 4
gpt4 key购买 nike

我让 visual studio 为我类的每个成员创建了一个测试。这是一个示例:

/// <summary>
///A test for CloseCurrentTextLogFile
///</summary>
[TestMethod()]
public void CloseCurrentTextLogFileTest()
{
Logger.CloseCurrentTextLogFile();
Assert.Inconclusive( "A method that does not return a value cannot be verified." );
}

基于断言字符串,我想知道如何测试它...有什么想法吗?

最佳答案

静态方法自然会使它们自身相当难以测试,因此我的建议是基于重构您的代码以远离静态方法。

我会把 Logger 变成一个实例类,在构造函数中接受一个 IO 对象。这将允许您 stub IO 对象,并且您可以断言您的 IO 对象的 Close 方法已被调用。

这仅适用于您想让代码 100% 可测试的情况。否则,我会同意 Mo,如果它不可测试,那么就不要编写强制测试……那些往往非常脆弱。最后,您需要务实地对待您的代码。通常记录器对于保持静态很有用,但是正如我已经提到的,这些记录器往往是非常不可测试的……所以对您的工作要务实,不要仅仅为了获得 100% 的代码覆盖率而编写测试。 .100% 会付出代价...

更新

这就是为什么从单元测试的教条 POV 来看这不是真正可测试的。您不是在测试工作单元,而是在测试 Logger AND Logger 的依赖项(在本例中为 IO 对象)。它还会使您的测试变慢并且需要环境设置和状态(您必须首先打开一个实际文件才能关闭它,对吗?)。这些都对单元测试不利,但对集成测试没问题……所以这也取决于您编写的测试类型。

关于c# - 如何测试一个没有返回值的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366420/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com