I am using Mstest for the first time and writing a unit test. I used ClassInitiaze attribute for setup. Since I did that I have been getting this message
Message: Method TryDI.Tests.HouseKeeperServiceTests.TestSetup has wrong signature. The method must be static, public, does not return a value and should take a single parameter of type TestContext. Additionally, if you are using async-await in method then return-type must be Task.
What am I doing wrong here?
[TestClass]
public class HouseKeeperServiceTests
{
private HousekeeperService _service;
private Mock<IStatementGenerator> _statementGenerator;
private Mock<IEmailSender> _emailSender;
private Mock<IXtraMessageBox> _messageBox;
private DateTime _statementDate = new DateTime(2017, 1, 1);
private Housekeeper _houseKeeper;
[ClassInitialize]
public void TestSetup()
{
_houseKeeper = new Housekeeper { Email = "a", FullName = "b", Oid = 1, StatementEmailBody = "c" };
var unitOfWork = new Mock<IUnitOfWork>();
unitOfWork.Setup(uow => uow.Query<Housekeeper>())
.Returns(new List<Housekeeper>
{
_houseKeeper
}.AsQueryable());
_statementGenerator = new Mock<IStatementGenerator>();
_emailSender = new Mock<IEmailSender>();
_messageBox = new Mock<IXtraMessageBox>();
var service = new HousekeeperService(unitOfWork.Object,
_statementGenerator.Object,
_emailSender.Object,
_messageBox.Object);
}
[TestMethod]
public void SendStatementEmails_WhenCalled_GenerateStatements()
{
_service.SendStatementEmails(_statementDate);
_statementGenerator.Verify(sg =>
sg.SaveStatement(_houseKeeper.Oid, _houseKeeper.FullName, (_statementDate)));
}
}