gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:30:50 25 4
gpt4 key购买 nike

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

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

我也在使用 Yahoo 用户界面库,我是否也需要测试它?

有哪些 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)的本质。试验一下。有些人更喜欢“每次测试一个断言”,但如果它以不同的方式更适合您,则不一定非要这样。

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

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com