c# - 使用 xunit 和 .net core 3.1 进行单元测试时退出记录器
问题描述
在输出窗口中运行单元测试时,我试图从记录器获取输出,但没有显示。我在测试类中使用 ILoggingFactory。我希望从测试类和实际实现类(即 JobQueueManager)中看到我的所有日志。
测试.cs
public class ScheduledJobDatesTest :IClassFixture<ScheduleJobTestFixture>
{
private ScheduleJobTestFixture ScheduleJobFixtureHelper { get; }
Mock<IDbConnection> mockJobQueueManager = new Mock<IDbConnection>();
ILoggerFactory logger = new LoggerFactory();
public ScheduledJobDatesTest(ScheduleJobTestFixture scheduleJobFixture)
{
ScheduleJobFixtureHelper = scheduleJobFixture;
mockJobQueueManager.SetReturnsDefault(new SqlConnection());
logger = LoggerFactory.Create(a => a.AddConsole());
logger.CreateLogger("Executing Test");
}
[Fact]
public void ValidScheduledJobDateForNextWeeklyAppointment()
{
Debug.WriteLine("Testing");
logger.CreateLogger("Test").LogInformation("Test Information");
//Arrange
JobQueueManager jobQueueManager = new JobQueueManager(mockJobQueueManager.Object, logger.CreateLogger<JobQueueManager>());
var scheduledJob = ScheduleJobFixtureHelper.GetMockedScheduledJob(JobType.Week);
//Act
bool isTrue = jobQueueManager.IsScheduledJobDateValidForJobType(scheduledJob.JobDate);
//Assert
Assert.True(isTrue);
}
}
作业队列管理器.cs
public class JobQueueManager : IJobQueueManager
{
public IDbConnection DBConnection { get; }
public ILogger<JobQueueManager> Logger { get; }
public JobQueueManager(IDbConnection dbConnection, ILogger<JobQueueManager> logger)
{
DBConnection = dbConnection;
Logger = logger;
Logger.LogInformation("Initialized Job Queue Manager");
}
public bool IsScheduledJobDateValidForJobType(DateTime ScheduledJobDate)
{
Logger.LogDebug("Verifying unit test");
var currentDate = DateTime.Now;
var nextJobDate = ScheduledJobDate;
if (nextJobDate > currentDate)
{
var appointmentsDaysDifference = Math.Ceiling((nextJobDate - currentDate).TotalDays);
if(appointmentsDaysDifference == 1)
return true;
}
return false;
}
}
解决方案
推荐阅读
- api - 颤动的http post请求显示状态码500,尽管它在邮递员中工作
- java - 将时区字符串日期解析为 Java 的 Instant
- node.js - 我如何将(例如!lang en)保存到 json 文件中,以便机器人使用该 lang 的差异命令
- rest - 如何使用 apollo 客户端进行休息发布请求?
- android - Android ContentResolver 正在从选择中返回具有不同 mime 类型的文件
- r - 如何应用用户定义的函数来获取 ParalleDisr 中的距离
- null - .withSuccessHandler 返回 null
- python - 如何从路径的用户那里获取输入,我必须将多个 excel 文件头和文件名合并到 python 中的其他 excel 文件中
- javascript - JavaScript Promise 构造函数
- ruby-on-rails - 受保护的 state_machines 事件