unit-testing - 您如何对不同的类访问级别进行单元测试?

标签 unit-testing

我承认 - 在单元测试方面我是一个完全的新手。我可以很容易地掌握这些概念(测试一件事,break-fix-test-repeat 等),但是我在解决这个问题时遇到了一些问题......

我的任务是重写我们应用程序的很大一部分,并且我已经很好地整理了类结构。我们将我们的测试项目与解决方案的其余部分混合在一起,并且所有引用都按照我们希望的方式排列。不幸的是,有一些 Friend 类只能从同一个命名空间内访问。就目前而言,测试类不是此命名空间的成员,因此我无法直接访问任何这些底层方法,真的需要测试。

根据我一直在阅读的内容,我可以创建一个有问题的类的公共(public)模型并以这种方式进行测试,但我担心将来有人会更改生产代码而不是将其复制到测试代码,完全违背了测试的目的。另一种选择是更改类本身的访问级别,但这会涉及大量开销和摆弄已经存在的代码。编写接口(interface)的想法也出现了,但是为了测试而创建一个完整的接口(interface)结构并没有在管理中流行起来。

我只是在这里遗漏了什么吗?在不更改对它们的访问权限的情况下,确保这些底层类确实正常运行的最佳方法是什么?

最佳答案

我不确定您是否引用 .NET/C# 项目,但您可以添加 InternalsVisibleTo属性到 AssemblyInfo.cs 文件,以公开您的 internal类到单元测试程序集。

假设您创建了一个名为“MyApplication.Tests”的单元测试项目,将其添加到“MyApplication”项目的 AssemblyInfo.cs 文件(位于“Properties”下):
[assembly: InternalsVisibleTo("MyApplication.Tests")]

关于unit-testing - 您如何对不同的类访问级别进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/241364/

相关文章:

c# - 是否应该为事件驱动代码中的私有(private)方法编写单元测试?

c++ - 访问 Google Test 参数化测试用例 (`TEST_P` 中的测试信息)

unit-testing - Clojure 测试 : testing the negation of an assertion

javascript - 如何使用 jasmine 框架对特定文件 node.js 进行单元测试

java - 使用 Mockito 和 JUnit 进行测试时的奇怪行为

python - 使用nosetests 特别命名的目录

php - 如何在 php 中更改单元测试日期函数的当前时间

C# wpf UnitTesting View 模型

java - JUnit - 从类型转换返回模拟对象

javascript - Mocha React Native 路由器编译错误