Java类的单元测试和源代码

Java类的单元测试和源代码,java,Java,我很想了解Java是如何测试其API的。比如说,我对ConcurrentHashMap类很感兴趣,这个类会有单元测试吗?如果是这样,它是否可供公众使用?任何打包在jdk中的类(如ConcurrentHashMap)都经过测试,您几乎不必担心所有情况。如果您实现了定义良好的接口,那么就有可用的测试用例可以针对您的API运行,并检查它是否满足要求。此外,如果您定义了一个将公开的新API,则必须使用JUnit或TestNg编写测试用例。在这里,测试用例的目的应该是检查API是否给出了预期的结果。如果您

我很想了解Java是如何测试其API的。比如说,我对ConcurrentHashMap类很感兴趣,这个类会有单元测试吗?如果是这样,它是否可供公众使用?

任何打包在jdk中的类(如ConcurrentHashMap)都经过测试,您几乎不必担心所有情况。如果您实现了定义良好的接口,那么就有可用的测试用例可以针对您的API运行,并检查它是否满足要求。此外,如果您定义了一个将公开的新API,则必须使用JUnit或TestNg编写测试用例。在这里,测试用例的目的应该是检查API是否给出了预期的结果。如果您涵盖了使用API的所有组合,那么您可以确定何时存在回归

Offtopic:集成测试假设在集成所有组件时测试整个项目

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

当您说“Java”时,您可能指的是Java开发工具包(JDK),它的名称是(OracleJDK本质上是带有的OpenJDK)。OpenJDK是开源的;其所有项目的源代码可在此处找到:

特别是,这里有一个可浏览版本的项目目录


我很想了解Java是如何测试其API的。比如说,我对ConcurrentHashMap类很感兴趣,这个类会有单元测试吗?如果有,是否可供公众使用

是的,有关所有jdk7测试的列表,请查看

如果您对
ConcurrentHashMap
测试感兴趣,请查看



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

您可能无法获得Oracle Java的源代码(以及测试代码)。然而,由于OpenJDK在理论上遵循与Oracle Java相同的行为规范(至少对于我熟悉的所有部分而言),因此您可能可以使用它们的单元测试来测试您的库。可以浏览OpenJDK的
jdk8
的源代码(请参阅
test
目录中的测试),您可以在其主页上找到其他版本的java


然而,正如Erranda指出的,您应该真正问问自己是否想要测试现有的库。它们可能比您最终编写的任何东西都要经过更彻底的测试,除非您在发现问题(可能导致兼容性问题)后想从源代码重新编译Java,否则在库中发现错误有什么好处?

您指的是哪种Java实现?如果你是指OpenJDK,我怀疑你能找到它们(在他们的源代码中有一个
test
目录)。如果你指的是Oracle的Java,那么我怀疑你会有这么多运气。我不确定你为什么要在平台库中的类上运行单元测试。存在平台库的部分原因是,您将拥有一组已经为您测试过的实用程序类。许多库类的开发和测试时间比您自己花在任何类上的时间都要多,我的意思是,Oracle的Java不是。但是很高兴了解开放jdk的测试。我不打算运行这些单元测试,只是想了解Java API是如何测试的。@soong你所发布的内容是非常棒的资源,我想这就是他想要的。你应该把它作为答案贴出来。如果没有别的,我会给你投票:)