【发布时间】:2010-02-08 22:38:33
【问题描述】:
对于单元测试,您不应该测试私有方法,是的,但是对于集成测试(使用 MSTest 或 NUnit 之类的单元测试框架),我非常希望针对测试 url 运行内部 API 调用,以确保当前代码在第三方 API 供应商更改其后端时有效。
鉴于系统的复杂性(愚蠢的 API 有数百个参数),我将其中的大部分隐藏在接口和 IoC 后面,API 帮助程序类完全位于我们的数据层库内部。我不想更改它,因为它曾经是公开的,我们发现奇怪的开发人员是该项目的新手并且通常没有经验,他们会立即继续并直接从网站代码调用 api。使类内部化应该确保他们至少在破坏我们抽象层的点之前进行思考。
我一直在构建大量反射代码来获取内部方法,但它运行得不太好,而且越来越多。有没有办法让某些库的方法公开可见?有没有办法让测试库将自己视为包含 api 的库的一部分?这是最佳实践吗?
【问题讨论】:
-
根据您使用的语言,您可以设置库类的可见性并从中派生一些测试。假设您使用的是受保护的。
-
根据您提到的 NUnit 和 MSTest,我在回答中假设您使用的是基于 .net 的语言,如果不正确,请告诉我们=)
-
.NET C# 混合了 3.5(用于测试)和 2.0(用于层代码),后者归功于 stage/uat/prod 服务器的延迟升级。
标签: unit-testing mstest integration-testing