TDD新手,Null String的单元测试

时间:2014-02-17 15:51:42

标签: c# asp.net unit-testing tdd nunit

我是TDD的新手,我很少混淆如何继续。我正在创建一个登录功能(ASP.NET Webform),我想创建一个单元测试来检查loginId并且PAssword不为null。

为了完成我的任务,我开始这样:

    [Test] 
    public void MethodForTest_StringNotNull()
    {
        string expected="asdf";
        Login log=new Login();
        Assert.IsNotNull(expected,log.UserId);

    }

如果这是正确的方法,请告诉我。

谢谢,

2 个答案:

答案 0 :(得分:1)

您正在使用Assert.IsNotNull(object, string)重载(请参阅documentation

因此,如果expected null,不是log.UserId,则显示您正在测试的代码,请将{{1}}显示为错误消息。

要实际测试您的网络表单代码,您可以查看名为Model View Presenter的设计模式。通过使用这样的模式,您可以将用户界面与代码分离。这允许您伪造一个用户界面,您可以在其中设置用户界面中的虚拟值,以获取用户名和密码等值。然后,您可以验证您的代码是否正确。

您的数据库也是如此。如果您的单元测试使用的是您实际创建的数据库 集成测试。这是一种应该以不同方式处理的不同类型的测试。

我刚刚写了一篇关于其中一些概念的博客文章。我希望它可以帮到你:Unit Testing, hell or heaven?

答案 1 :(得分:0)

您可以使用不同级别的测试。

单元测试

您的示例代码是一个单元测试(只要Login不调用数据库,否则会使这成为集成测试)。在这方面对Login类的单元测试没有多大价值,因为它看起来并不多(尽管我们还没有看到Login的代码,所以这是一个假设)。

整合测试

此类测试意味着您正在与外部“事物”进行交互,例如数据库,文件系统,网络等。如果没有看到Login的代码,我就不可能在这里说明集成测试对你有用。

功能测试

在这里,您可以使用Watin之类的工具来驱动实际的浏览器,该浏览器将导航到您的网站并执行您要求它执行的任何命令。因此,您可以导航到登录页面,输入用户名和密码,单击“确定”,然后在测试中验证是否给出了预期的用户名和密码。

听起来你需要在这里使用功能测试,因为你想确保给定的用户输入是你在服务级别所期望的。

在上述所有测试类型中,您仍然可以使用NUnit来驱动测试,因此不必担心。使用Watin,您只需将其下载并将其包含在项目中,就像工具的文档所述。

还有其他网络驱动程序类型工具可供使用,但Watin是我的最爱。