我试图测试的不是状态,而是某些代码的行为。如果调用了某个方法,我可以使用 MSTest 断言吗?我可以使用模拟框架吗?
特别是现在我想检查一个私有对象是否被实例化,而不是仅仅为了测试而被迫将其公开,但是一个检查是否调用任何方法的解决方案对于未来的需求来说是很好的:)
我试图测试的不是状态,而是某些代码的行为。如果调用了某个方法,我可以使用 MSTest 断言吗?我可以使用模拟框架吗?
特别是现在我想检查一个私有对象是否被实例化,而不是仅仅为了测试而被迫将其公开,但是一个检查是否调用任何方法的解决方案对于未来的需求来说是很好的:)
与其测试方法,不如真正测试方法的行为。这意味着看看你的方法做了什么,并编写一个测试来确定它改变的数据确实改变了。例如:
public void Bigmethod()
{
newUpCollections();
CreateDatabaseConnection();
FlagBadData();
}
如果您想验证 newUpCollections 是否有效:
[TEST]
public void BigMethod_WhenCalled_RecreatesCollections()
{
BigMethod()
Assert.IsNotNull(Class.Collections);
}
如果你的方法没有任何改变任何东西的行为,你可能不需要测试它,甚至可能在软件中不需要它。所以看看你的方法,它改变了什么数据,你能监控到这些数据真的被改变了吗?