c# - mstest classinitialize 显示错误的签名错误信息
问题描述
我第一次使用 Mstest 并编写单元测试。我使用 ClassInitiaze 属性进行设置。自从我这样做以来,我一直在收到此消息
消息:方法 TryDI.Tests.HouseKeeperServiceTests.TestSetup 的签名错误。该方法必须是静态的、公共的、不返回值并且应该采用 TestContext 类型的单个参数。此外,如果您在方法中使用 async-await,则返回类型必须是 Task。
我在这里做错了什么?
[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)));
}
}
解决方案
您可以使用 TestInitialize:
[TestInitialize]
public static void TestSetup() { }
但如果你想使用 ClassInitialize 看到这篇文章:
错误 CLassInitialize 签名错误。方法必须是静态的,公开的,不返回值
“ClassInitialize 属性需要添加括号,其次尝试使方法名称与属性不同,因为它可能会使编译器感到困惑”
例如:
[ClassInitialize()]
public static void TestSetup(TestContext context){ }
无论如何,您应该知道 TestInitializer 和 ClassInitializer 之间的区别:
“ TestInitialize在声明属性的同一类上声明的每个测试之前运行。”
“ ClassInitialize仅在声明属性的类的初始化时运行。换句话说,它不会为每个类运行。仅适用于包含 ClassInitialize 方法的类。”
推荐阅读
- java - 为什么我不能将类型参数添加到覆盖方法?
- python - OSError:无法在 Python 中打开资源(词云)
- angular - Primeng:与表格和其他元素的对话框中表格滚动条的高度错误
- python - Pyinstaller,.exe 文件什么都不做
- arduino-nano - Arduino 编译错误“___vector_11 的多重定义”
- python - 如何使用 numpy 减少 for 循环的使用?
- azure - Azure Maps - 看不到地图
- python - 如果另一个会话已经打开,SQLAlchemy .commit() 会成功但没有效果
- javascript - 显示重复的 HTML?
- sql - Oracle 12.2 中使用 BIND 变量和 OR 条件的 QUERY 性能问题