【发布时间】:2013-11-21 11:25:39
【问题描述】:
我正在尝试测试一个名为 Login 的方法,当用户和密码参数正确时,设置两个会话变量和三个 cookie 的值并最终返回 true。
我已经阅读了几篇关于单元测试的文章,但不知何故,这并没有让我完全清楚我的情况。我知道每个单元测试应该只有一个断言,尽管你可以使用多个断言,只要你测试一个“逻辑概念”。
登录方法只有在正确设置每个会话变量和cookie并返回预期值时才是正确的,所以我不确定一次检查所有这些值是否可以(这将导致我使用六个断言在单元测试中,我觉得有点脏)或者我是否应该在不同的测试中分别检查每个会话变量和 cookie 的值。
[TestMethod()]
public void SuccessfulLoginTest()
{
// Arrange.
String username = "foo";
String password = "correct password";
Boolean remember = true;
// Act.
Boolean actual = Login(username, password, remember);
// Assert.
Assert.IsTrue(actual);
Assert.AreEqual("foo", HttpContext.Current.Session["Username"]);
Assert.AreEqual(1, HttpContext.Current.Session["Group"]);
Assert.AreEqual("foo", HttpContext.Current.Response.Cookies["Username"].Value);
Assert.AreEqual("en", HttpContext.Current.Response.Cookies["Lang1"].Value);
Assert.AreEqual("es", HttpContext.Current.Response.Cookies["Lang2"].Value);
}
【问题讨论】:
-
每个测试用例应该只有一个断言is foolish的想法。
标签: c# visual-studio unit-testing assert