.net - .NET项目中单元测试和验收测试的实现

标签 .net unit-testing testing nunit integration-testing

我读过 this article以及其他一些关于测试的内容,我认为我理解了理论,但不了解实际 .NET 项目中的实现。

我的项目分解为多个(功能)程序集,我想对其进行测试。我的大部分方法和属性都是私有(private)的或内部的,因此我无法从我的测试程序集中访问它们。 我只测试公共(public)的(为了测试我的程序集的所有路径)。

我想知道我正在做的测试,因为这些测试不是单元测试,因为我正在使用其他服务,如数据库,或其他服务,如 Microsoft HPC...我说得对吗?在我看来,如果我想做一些单元测试,我必须测试私有(private)方法和属性,这是有争议的事情。

我正在使用 Nunit,我想知道是否可以在框架中进行集成测试和单元测试?

是否有任何带有单元测试和验收测试的 .NET 开源项目可供我查看?

谢谢

最佳答案

很多问题...

public/private:通常,您只想通过公共(public)接口(interface)进行测试。如果你想测试一个私有(private)方法,这可能是你应该将类分成两部分并让私有(private)方法成为公共(public)(或内部)的标志。建议零售价。要测试内部方法,check this answer .

编写测试时,您希望测试系统的行为。对于行为,请考虑从最终用户的角度来看系统的行为方式(尽管也可能有其他感兴趣的利益相关者)。如果这样做,您就很少会遇到想要测试私有(private)方法的问题。

单元测试集成测试 之间的区别是有争议的,在我看来,这不是一个非常重要的争论。更重要的是问问自己,测试的目的是什么?

如果您的目的是测试您的系统(而不是与外部系统集成等),您的测试应该是可重复的、快速的并且不包括您不拥有的任何东西。可重复的意思是,如果测试失败一次,它应该总是失败(没有随机性)。快速是指您不必等待太长时间即可获得运行所有测试的反馈。对于你所拥有的,我的意思是测试不应该因为在你的组织之外所做的更改而开始失败。如果您可以实现这一点并且仍然包含对数据库和/或 Microsoft HPC 的调用,那么我看不出有任何理由不这样做。

要在 NUnit 中区分不同的测试类型,您可以使用 categories .大多数工具允许您基于这些工具运行一个子集。

关于.net - .NET项目中单元测试和验收测试的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236231/

相关文章:

.net - 项目什么时候需要 Azure?

c# - 从字符串名称在程序集中创建类实例

c# - 如何使用 Linq 表达式在 Telerik Radgridview 中查找隐藏列

java - 如何为一组方法编写单元测试,其中每个方法都依赖于其他方法?

ruby - 未定义的局部变量或方法 - 使用 Beaker 测试 Puppet 模块

c# - Moq C#,我怎样才能模拟这个类?

django 项目中的 Javascript 测试,具有 CI 和覆盖率

php - 如何将绝对系统路径转换为 ​​IShellFolder?

c - 自动测试字符串处理功能

java - 如何使用 junit 测试将元素添加到数组列表