在输出窗口中运行单元测试时,我试图从记录器获取输出,但没有显示任何内容。我在测试类中使用 ILoggingFactory。我期待从测试类和实际实现类(即 JobQueueManager)中看到我的所有日志。
测试文件
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);
}
}
作业队列管理器
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;
}
}
您使用的是什么版本的 xUnit?
如果您使用 xUnit.net 1.x,您可能以前一直在将输出写入控制台、调试或跟踪。当 xUnit.net v2 默认开启并行化时,这种输出捕获机制不再适用;不可能知道可以并行运行的许多测试中的哪一个负责写入这些共享资源。将代码从 v1.x 移植到 v2.x 的用户应改用这两种新方法之一。
似乎有很多方法可以解决这个问题,如果是我,我会考虑实施自定义 provider。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句