.net core测试项目如何打印信息?
How to print information in .net core test projects?
在测试项目中打印消息的标准方式是什么?
我有一个用 MSTest 编写的集成测试项目,每个测试用例都包含登录步骤和实际调用等。我需要将一些消息打印到控制台以跟踪信息,例如它以哪个角色登录以及哪个 url 来电了。
理想情况下,我希望消息仅在调试模式下显示。
目前我正在使用 Console.WriteLine
和 #if DEBUG
指令。有没有更好的方法呢?
您不需要在单元测试中记录任何内容。前提是测试中的代码不言而喻,任何阅读它们的人都能理解发生了什么。如果您觉得需要在测试中添加日志记录,则表明您的代码过于复杂,需要重构。
了解 SOLID principles and refactor your code to follow these "rules". I would recommend the first principle you try to follow is the Single Responsibility Principle 背后的原理是个好主意。这应该可以帮助您重构代码以使其更易于测试,并且无需向测试添加日志记录。 (注意:互联网上还有其他示例 - 上面的链接只是我通过快速搜索找到的示例)。
编辑
您可以创建自己的 logger
class 来封装您的 Console.WriteLine(...)
调用,例如
public static class TestLogger
{
public static void Log(string output)
{
#if DEBUG
Console.WriteLine(output);
#endif
}
}
并在您的测试代码中使用您的 class
public class MyTests
{
public void FirstTest()
{
TestLogger.Log("Just started");
}
}
记录器只在调试模式下写入控制台这一事实在测试代码中是隐藏的,希望它能更清楚一点。将来,如果你想使用 Log4Net
或其他日志库,你可以更新你的 TestLogger
class 并且希望你的 none 测试用例需要更改:-)
在测试项目中打印消息的标准方式是什么?
我有一个用 MSTest 编写的集成测试项目,每个测试用例都包含登录步骤和实际调用等。我需要将一些消息打印到控制台以跟踪信息,例如它以哪个角色登录以及哪个 url 来电了。
理想情况下,我希望消息仅在调试模式下显示。
目前我正在使用 Console.WriteLine
和 #if DEBUG
指令。有没有更好的方法呢?
您不需要在单元测试中记录任何内容。前提是测试中的代码不言而喻,任何阅读它们的人都能理解发生了什么。如果您觉得需要在测试中添加日志记录,则表明您的代码过于复杂,需要重构。
了解 SOLID principles and refactor your code to follow these "rules". I would recommend the first principle you try to follow is the Single Responsibility Principle 背后的原理是个好主意。这应该可以帮助您重构代码以使其更易于测试,并且无需向测试添加日志记录。 (注意:互联网上还有其他示例 - 上面的链接只是我通过快速搜索找到的示例)。
编辑
您可以创建自己的 logger
class 来封装您的 Console.WriteLine(...)
调用,例如
public static class TestLogger
{
public static void Log(string output)
{
#if DEBUG
Console.WriteLine(output);
#endif
}
}
并在您的测试代码中使用您的 class
public class MyTests
{
public void FirstTest()
{
TestLogger.Log("Just started");
}
}
记录器只在调试模式下写入控制台这一事实在测试代码中是隐藏的,希望它能更清楚一点。将来,如果你想使用 Log4Net
或其他日志库,你可以更新你的 TestLogger
class 并且希望你的 none 测试用例需要更改:-)