加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何测试没有返回值的函数?

发布时间:2020-12-15 08:45:41 所属栏目:百科 来源:网络整理
导读:我有视觉工作室为我班上的每个成员创建一个测试.这是一个例子: /// summary///A test for CloseCurrentTextLogFile////summary[TestMethod()]public void CloseCurrentTextLogFileTest(){ Logger.CloseCurrentTextLogFile(); Assert.Inconclusive( "A metho
我有视觉工作室为我班上的每个成员创建一个测试.这是一个例子:
/// <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对象的实例类.这将允许您存根IO对象,并且您可以断言已调用IO对象的Close方法.

仅当您希望使代码100%可测试时才这样做.否则,我同意莫,如果它不可测试,那么不要写强制测试…那些往往非常脆弱.最后,您需要对您的代码务实.通常记录器对于保持静态是有用的,但正如我已经提到的,这些往往是非常不稳定的….所以只是务实你的工作并且不要仅仅为了获得100%的代码覆盖而编写测试. .100%将有价格……

UPDATE

这就是为什么这不是真正可以从单元测试的教条POV中测试的.您没有测试工作单元,而是测试Logger和Logger的依赖项(在本例中为IO对象).它还使您的测试变慢并且需要环境设置和状态(您必须首先打开一个实际文件来关闭它,对吧?).这些都不适合单元测试,但是对于集成测试来说还不错……所以这取决于你正在编写什么样的测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读