Java类的单元测试和源代码

dha*_*u05 6 java

我很想知道Java如何测试它的API.让我们说,我对ConcurrentHashMap类感兴趣,这个类会有任何单元测试吗?如果是这样,它是否可供公众使用?

bco*_*rso 8

当您说" Java "时,您可能意味着Java Development Kit(JDK),它来自OracleJDKOpenJDK(OracleJDK本质上​​是OpenJDK,附带一些额外内容).OpenJDK是开源的; 并且可以在此处找到所有项目的源代码:

http://hg.openjdk.java.net/

特别是,这是jdk7项目目录的可浏览版本.


我很想知道Java如何测试它的API.让我们说,我对ConcurrentHashMap类感兴趣,这个类会有任何单元测试吗?如果是这样,它是否可供公众使用?

是的,对于所有jdk7测试的列表,请查看jdk7/jdk/test.

如果您对ConcurrentHashMap测试感兴趣,请查看jdk7/jdk/test/java/util/concurrent/ConcurrentHashMap:


注意: JDK测试可能看起来有点尴尬,因为它不使用JUnit,它使用JTreg.


Era*_*nda 0

任何像ConcurrentHashMap这样封装在jdk内部的类都经过测试,几乎所有情况你都不需要担心。如果您实现了定义良好的接口,那么就有可用的测试用例可以针对您的 API 运行并检查它是否自满。此外,如果您定义要公开的新 API,则必须使用 JUnit 或 TestNg 编写测试用例。这里测试用例的目的应该是检查你的 API 是否给出了预期的结果。如果您涵盖了使用 API 的所有组合,那么您可以识别何时出现回归。

题外话:集成测试假设在所有组件都集成时测试整个项目。

[更新]如果您确实需要测试ConcurrentHashMap,您可以使用使用ConcurrentHashMap的示例项目,请记住您最好选择多线程项目。