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对象).它还使您的测试变慢并且需要环境设置和状态(您必须首先打开一个实际文件来关闭它,对吧?).这些都不适合单元测试,但是对于集成测试来说还不错……所以这取决于你正在编写什么样的测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |