使用UnitTests c#进行测试时,请进行NLog日志记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用UnitTests c#进行测试时,请进行NLog日志记录相关的知识,希望对你有一定的参考价值。

正如标题所说,我希望在使用XUnit运行单元测试时不会忽略我的Logger。我还想要记录。如果可以,可以怎样做?

这是我的配置

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <target name="log"
       xsi:type="File"
       fileName="${basedir}/logs/log.${longdate:cached=true}.log"
       layout="${message}"
       archiveFileName="${basedir}/logs/archives/log.${shortdate}.{#}.log"
       archiveAboveSize="5242880"
       archiveEvery="Day"
       archiveNumbering = "Rolling"
       maxArchiveFiles="20"
     />
    <target name="logconsole" xsi:type="Console" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="logconsole" />
    <logger name="*" minlevel="trace" writeTo="log" />
  </rules>
</nlog>

我只有一个后端而且没有前端,所以当我运行测试时我想看到一切都记录:)

答案

您可以在单元测试中使用NLog。不幸的是,NLog很难找到nlog.config的路径,因为单元测试框架会在文件夹之间移动二进制文件 - 而不是nlog.config。

它在不同的环境/框架中也是不同的(NUnit,xUnit,MSTest,.NET full,.NET Core)

你可以这样做:

  • 在C#中编写配置。见Docs
  • 或者告诉NLog配置的路径: LogManager.Configuration = new XmlLoggingConfiguration("pathToNLogConfig/nlog.config");

还建议用于登录单元测试,写入内存目标而不是文件/数据库等。您还可以在代码中检索记录的事件。见memory target docs

以上是关于使用UnitTests c#进行测试时,请进行NLog日志记录的主要内容,如果未能解决你的问题,请参考以下文章

ut找不到测试的源位置

C语言——短路电流计算——翻译

我们可以对配音进行自动化测试吗?

unittests相关内容

pycharm Launching unittests with arguments

更改数据库模式和单元测试