单元测试和队长明显(ASP.NET MVC)

时间:2010-08-12 09:49:41

标签: asp.net-mvc unit-testing

最近我开始写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? 自行检查。它比单元测试更快

让我们看一下帐户控制器的测试

使用此测试我们可以检查登录成功。但是运行应用程序并手动输入登录名/密码更简单

请描述单元测试的优点。在单元测试中,我们将手动输入数据。那为什么我们不能手动输入呢? Разъяснитепожалуйставчёмихплюс。 Есливсёравновсетестировочныеданныенабиваешьрукаминепрощелисамомувсёпроверить

2 个答案:

答案 0 :(得分:3)

你是对的,这些是明显上尉的单元测试。在实践中,你会编写比这更复杂的单元测试。

  

但是运行应用程序并手动输入登录名/密码更简单

一次,也许吧。但每次构建后?重点是自动化:一旦你建立了一个庞大的单元测试套件,你就可以使用测试框架自动执行它,以捕获最后一组更改引入的回归。

然后是测试驱动开发等等。我希望有很好的“为什么单元测试?”那里有更多的文章。

答案 1 :(得分:1)

很好,有两个原因:

  1. 单元测试是自动的。所有你 需要是运行测试并检查 如果一切都好。如果是 手动测试你应该手动 每次检查你的一切 需要进行测试。

  2. 单位测试称为“单位”,因为 你可以测试每个方法 隔离。所以万一你出错了 很容易找到原因。

  3. 详细了解unit tests