我有视觉工作室为我班上的每个成员创建一个测试.这是一个例子:
/// <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对象).它还使您的测试变慢并且需要环境设置和状态(您必须首先打开一个实际文件来关闭它,对吧?).这些都不适合单元测试,但是对于集成测试来说还不错……所以这取决于你正在编写什么样的测试.