我正在努力通过我的单元测试获得更好的代码覆盖率,最近我转而使用RhinoMock来满足我的模拟需求。
但是我有一个关于如何编写特定单元测试的问题,Save()函数。
我有一个带有几个函数的IView接口,用于从视图中检索值(aspx页面),例子是GetUsername(),GetPassword(),GetAddress()和GetCountry()。
当用户点击提交按钮时,我想要测试是否测试是否实际调用了所有这些功能。所以我写了这个测试:
[TestMethod]
public void MainController_Save_ShouldRetrieveLUsername()
{
//Initialize the IView and Controller
InitViewAndController();
//Trigger the Save function triggering the controller
//to collect information for storage
_controller.Save();
_view.AssertWasCalled(s => s.GetUsername(), o => o.Repeat.Once());
}
现在终于出现了问题,考虑到aspx包含需要保存的15个输入字段,是否有更好的方法来测试这种写入和维护这些测试的15个行为? 一方面,测试应该是简单的,最优的只有一个断言,但这些功能中的15个感觉就像浪费一样。
答案 0 :(得分:1)
不是测试是否调用这些函数(它们看起来更像属性而不是函数,BTW),而应检查Save
函数的结果。您应该将测试代码更像是一个黑盒子,并尽量不要将太多的内部知识插入到测试中。这样,当Save
代码发生变化时,您的测试就会变得不那么脆弱。
谷歌“基于州的测试”。