Я бы порекомендовал вам использовать Mocking Framework, такой как Moq. Смотрите мой прикрепленный пример кода. ILog - это интерфейс для класса журнала.
public interface ILog {
void Add(Log log);
}
Ваш класс Logger может выглядеть следующим образом:
public class Logger : ILog{
....
public void Add(Log log)
{
if (!(log.TimeStamp > DateTime.Now))
{
Entries.Add(log);
}
}
}
...
Вы можете создать свой TestCases следующим образом
using Moq;
public class TestLogger
{
private Mock<ILog> _logMock;
private ILog _logger;
[Setup]
public void SetUp()
{
_logMock = new Mock<ILog>();
_logMock.Setup(a => a.Add(It.IsAny<Log>())).Verifiable(); // check if method is called
_logger = _logMock.Object;
}
...
[Test]
public void SomeTest()
{
//test some business logik - inject your logger instance into businesslogic class
//check if logger was called once
_logMock.Verify(a => a.Add(It.IsAny<Log>()), Times.Once);
}
}
Если невозможно использовать Moq и внешние интерфейсы, вы можете написать свой тест, чтобы проверить, не является ли ваш список записей не пустым.
public class Logger
{
public List<Log> Entries = new List<Log>();
...
}
[TestCaseSource(nameof(something))]
public void AddDebugSetAnonymusUserTest()
{
var logger = new Logger();
logger.AddDebug("Text", null);
//here is the check if AddDebug was successful
Assert.AreEqual(1, logger.Entries.Count);
//check if user was anonymous
Assert.AreEqual("Anonymous", logger.Entries.FirstOrDefault().UserName);
}
....