c# - .NET 中的单元测试和 UI 测试

标签 c# javascript .net asp.net-mvc unit-testing

我是单元测试新手。我想知道我需要进行什么级别的单元测试。我主要从事网络应用程序的工作。我目前正在阅读一本 MVC 书籍,他们展示了一些网格分页和填充菜单控件的单元测试。是否必须测试业务对象属性、方法、数据层、存储过程等?我不想显得偏执并测试一切。如果这是最佳实践,那么我就会这样做。

例如,如果名字属性应该有 50 个字符长,并且可能只包含字母字符,那么我是否需要测试这两个字符?

我也在使用雅虎用户界面库,我也需要测试它吗?

有哪些 UI 单元测试工具可用?我听说有一些框架可以让你模拟一个整体,即使它不存在,然后你可以用这种方式测试页面?有哪些 UI 测试框架可用?

我想听听尽可能多的意见?任何为初学者推荐的带有许多示例的书籍将不胜感激。

谢谢

最佳答案

不要测试属性、方法、数据等。相反,描述您正在寻找的行为并提供一些示例来说明如何使用该类。

您会发现代码库中的大多数行为都是有值(value)的,因此您可以通过这种方式获得高水平的覆盖率,而不会显得偏执。 (如果没有值(value),请删除它!)

例如,您可以有一个验证器,其内容如下:

[Test]
public void ShouldOnlyValidateAlphaNamesLessThan50Chars() {

    var validator = new Validator();

    Assert.IsTrue(validator.validates("An Alpha Name"));

    Assert.IsFalse(validator.validates(
        "A Really Really Long Name that's 51 characters xx"));
    Assert.IsFalse(validator.validates("A name with 1234 numbers"));
}

这足以显示验证器应该具有的行为类型。

我会在每个测试方法中放置足够的示例来展示代码的有值(value)。尝试一下。有些人更喜欢“每个测试一个断言”,但如果它以不同的方式更适合您,则不必如此。

关于第三方库,我会考虑他们正在为您做哪些有值(value)的事情,然后将它们包装在另一个您可以模拟的类中。 Moq 是我最喜欢的 .NET 模拟框架选择。

对于 UI 测试,尤其是网页测试,我会考虑 Selenium.NET。但是,这用于测试整个系统 - 我们通常不会对 UI 元素进行单元测试。部分原因是它既困难又昂贵,部分原因是实际观察它们、使用它们并在上下文中使用它们是检查它们行为是否正确的唯一方法。

QUnit 是我见过的用于 Javascript 测试的框架,如果您在页面中使用它并且也想测试它的话。

关于c# - .NET 中的单元测试和 UI 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284760/

相关文章:

c# - 如何围绕 Url.Content 辅助函数创建包装器辅助函数?

javascript - 涵盖 Array 和 Typed Arrays 的 TypeScript 接口(interface)

.net - 为标签设置 WordWrap = false

.net紧凑框架 "Target framework"

c# - C# mysql 命令执行过程中遇到 fatal error

c# - 最佳方式 : to implement an interrupt/cancel feature for all your threaded workers

c# - 将关系数据库数据表示为 XML 并使用 XPath 获取结果

javascript - 如何在 jQuery 中缓存 $.post-request 的结果?

javascript - 如何在 Javascript 中切换两个时间间隔

.net - 为什么 UPX 不适用于 .NET 可执行文件?