相关疑难解决方法(0)

在单元测试中使用Reflection是不好的做法吗?

在过去的几年里,我一直认为在Java中,Reflection在单元测试中被广泛使用.由于某些必须检查的变量/方法是私有的,因此必须以某种方式读取它们的值.我一直认为Reflection API也用于此目的.

上周我不得不测试一些软件包,因此编写了一些JUnit测试.像往常一样,我使用Reflection来访问私有字段和方法.但我检查代码的主管对此并不满意,并告诉我,Reflection API并不适合用于此类"黑客攻击".相反,他建议修改生产代码中的可见性.

使用Reflection是不是很糟糕的做法?我真的不相信 -

编辑:我应该提到我需要所有测试都在一个名为test的独立包中(所以使用受保护的visibilty例如也不是一个可能的解决方案)

java reflection unit-testing

94
推荐指数
6
解决办法
4万
查看次数

私人方法的单元测试

我正在编写一些单元测试.特别是我想测试一些私有方法.

到目前为止,我已经提出了使用.

#define private public
Run Code Online (Sandbox Code Playgroud)

但我对此并不满意,因为它会从单元测试的角度破坏所有封装.

您使用什么方法对私有方法进行单元测试.

c++ unit-testing private-methods

93
推荐指数
7
解决办法
6万
查看次数

集成测试私有类和方法

对于单元测试,你不应该测试私有方法,是的,但对于集成测试(使用像MSTest或NUnit这样的单元测试框架),我非常希望针对测试URL运行内部API调用,以确保当前代码适用于第三方API供应商更改其后端的情况.

鉴于系统的复杂性(愚蠢的API有数百个参数),我将大部分隐藏在接口和IoC之后,API辅助类完全在我们的数据层库内部.我不想改变它,因为它曾经是公开的,我们发现这个奇怪的开发人员是项目的新手并且缺乏经验将会立即继续并直接从网站代码调用api.使类内部应该确保它们至少在破坏我们的抽象层之前进行思考.

我一直在构建大量的反射代码来获取内部方法,但它运行得不太好并且正在获得sphagetti-ish.有没有办法让这些方法对某些库公开可见?有没有办法让测试库将自己视为包含api的库的一部分?这是最好的做法吗?

integration-testing unit-testing mstest

2
推荐指数
1
解决办法
1361
查看次数