最近我开始写asp.net mvc框架。我有个问题。我无法理解单元测试的含义。我们来看看例子
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
和测试
[TestMethod]
public void Index()
{
HomeController controller = new HomeController();
ViewResult result = controller.Index() as ViewResult;
ViewDataDictionary viewData = result.ViewData;
Assert.AreEqual("Welcome to ASP.NET MVC!", viewData["Message"]);
}
[TestMethod]
public void About()
{
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
Assert.IsNotNull(result);
}
我有一个问题。
1)在什么情况下,方法About不会返回View?
如果没有查看关于,方法将不返回任何内容。很明显 单击“运行”很简单,在浏览器“主页/关于”中键入并查看结果。没有任何单元测试。 它比创建单元测试更快,运行它们......
2)在什么情况下,方法关于返回不同的ViewData? 自行检查。它比单元测试更快
让我们看一下帐户控制器的测试
使用此测试我们可以检查登录成功。但是运行应用程序并手动输入登录名/密码更简单
请描述单元测试的优点。在单元测试中,我们将手动输入数据。那为什么我们不能手动输入呢? Разъяснитепожалуйставчёмихплюс。 Есливсёравновсетестировочныеданныенабиваешьрукаминепрощелисамомувсёпроверить
答案 0 :(得分:3)
你是对的,这些是明显上尉的单元测试。在实践中,你会编写比这更复杂的单元测试。
但是运行应用程序并手动输入登录名/密码更简单
一次,也许吧。但每次构建后?重点是自动化:一旦你建立了一个庞大的单元测试套件,你就可以使用测试框架自动执行它,以捕获最后一组更改引入的回归。
然后是测试驱动开发等等。我希望有很好的“为什么单元测试?”那里有更多的文章。
答案 1 :(得分:1)
很好,有两个原因:
单元测试是自动的。所有你 需要是运行测试并检查 如果一切都好。如果是 手动测试你应该手动 每次检查你的一切 需要进行测试。
单位测试称为“单位”,因为 你可以测试每个方法 隔离。所以万一你出错了 很容易找到原因。
详细了解unit tests