Testing JUnit是黑盒测试还是白盒测试?

Testing JUnit是黑盒测试还是白盒测试?,testing,junit,black-box,white-box,Testing,Junit,Black Box,White Box,JUnit是黑盒测试还是白盒测试?我想它是白色的盒子,但我不确定。我正在寻找,但我找不到一个明确的答案。即使是简单的讨论也会很有用。基于白盒测试定义JUnit包含在这些测试形式中,包含以下技术:(例如,我们根据代码创建测试,或提供测试所有可能路径所需的所有信息。这不仅包括正确的输入,还包括错误的输入,以便可以验证错误处理程序。)在“JUnit”名称中使用“unit”可能表明JUnit只适用于单元测试,而且由于单元测试实际上是白盒测试的同义词,您的怀疑是正确的 单元测试,当根据本书进行时,在所有情

JUnit是黑盒测试还是白盒测试?我想它是白色的盒子,但我不确定。我正在寻找,但我找不到一个明确的答案。即使是简单的讨论也会很有用。

基于白盒测试定义JUnit包含在这些测试形式中,包含以下技术:(例如,我们根据代码创建测试,或提供测试所有可能路径所需的所有信息。这不仅包括正确的输入,还包括错误的输入,以便可以验证错误处理程序。)

在“JUnit”名称中使用“unit”可能表明JUnit只适用于单元测试,而且由于单元测试实际上是白盒测试的同义词,您的怀疑是正确的

单元测试,当根据本书进行时,在所有情况下都必须是白盒测试,除非测试没有依赖关系的单元

对于没有依赖关系的单元,单元测试和集成测试之间没有区别,(没有需要集成的依赖关系),因此白盒测试和黑盒测试的概念不适用

对于有依赖关系的单元,单元测试必然是白盒测试,因为为了测试一个单元,并且仅测试该单元,您不允许将其与依赖关系集成在一起进行测试,因此您必须去除其所有依赖关系,并将其替换为模拟,但在这样做时,您声称不仅知道首先,单元的依赖关系是,但更重要的是,它以何种方式与它们交互(它调用哪些方法,使用哪些参数,等等)

然而,尽管“unit”是其名称的一部分,JUnit本身并不限制您进行单元测试,因此它既不采用白盒方法,也不采用黑盒方法。您可以使用JUnit进行任何类型的测试

它添加了一个模拟框架,如JMock、Mockito等,使您的测试必须是白盒类型的

当我使用JUnit时,我只做我称之为增量集成测试的事情。这意味着首先我测试所有没有依赖关系的单元,然后我对依赖关系已经被测试过的单元进行集成测试,等等,直到所有的东西都被测试过。在某些情况下,我用特殊的实现替换一些依赖关系t面向测试(例如,HSQLDB而不是实际的磁盘RDBMS)但是我从不使用mock。因此,我从不做单元测试,除了没有依赖性的单元的边缘情况,正如我已经解释的,单元测试和集成测试之间没有区别。因此,我从不做白盒测试,我只做黑盒测试所有这些我都使用JUnit(或者我自己的测试平台,它在很大程度上与JUnit兼容)

大多数行业似乎都在使用JUnit进行广泛的单元测试(白盒测试)和集成测试(黑盒测试)