在测试项目中打印消息的标准方式是什么?
我有一个用MSTest编写的集成测试项目,每个测试用例都包含登录步骤和实际调用等。我需要在控制台上打印一些消息以跟踪信息,例如其登录角色以及所调用的网址。>
理想情况下,我希望消息仅在调试模式下显示。
当前,我正在将Console.WriteLine
与#if DEBUG
指令一起使用。有更好的方法吗?
答案 0 :(得分:1)
您无需在单元测试中记录任何内容。前提是测试中的代码可以说明一切,而阅读它们的任何人都可以理解正在发生的事情。如果您认为需要在测试中添加日志记录,则表明您的代码过于复杂,需要进行重构。
了解SOLID principles背后的原理并重构代码以遵循这些“规则”是个好主意。我建议您尝试遵循的第一个原则是Single Responsibility Principle。这应该可以帮助您重构代码以使其更具可测试性,并且无需在测试中添加日志。 (注意:互联网上还有其他示例-上面的链接只是我通过快速搜索找到的示例)。
编辑
您可以创建自己的logger
类来包装您的Console.WriteLine(...)
呼叫,例如
public static class TestLogger
{
public static void Log(string output)
{
#if DEBUG
Console.WriteLine(output);
#endif
}
}
并在测试代码中使用您的课程
public class MyTests
{
public void FirstTest()
{
TestLogger.Log("Just started");
}
}
记录器仅以调试模式写入控制台这一事实对于测试代码是隐藏的,希望可以使它更加清晰。将来,如果您想使用Log4Net
或其他日志记录库,则可以更新TestLogger
类,希望您的测试用例都不需要更改:-)