在@test注释的背景下发生了什么?

时间:2014-06-16 13:14:57

标签: java junit annotations

我看过很多很好的文章解释JUnit和解释Annotations的文章,但没有解释这两者如何实际联系在一起。

我知道注释@test位于您希望用于JUnit测试的方法前面,但有人可以解释后台发生了什么吗?

如何将注释转换为有用的Java代码?它发生在哪里?我怎么能自己制作这样的东西?

2 个答案:

答案 0 :(得分:2)

JUnit在注释之前诞生。那个时候必须使用前缀test调用所有测试方法。例如

testX()
testSomeStuff()

等等。

此外,所有测试用例都必须从抽象类TestCase进行扩展,该类具有通过反射提取所有非参数而不是以test开头并运行它们的静态方法来检查实际类的方法。

然后JUnit4到了。不推荐使用TestCase和测试命名约定。而是引入了测试运行器和注释。然而这个想法仍然存在测试运行器检查测试用例类,提取使用@Test注释注释的所有方法并运行它们。测试运行器也可以使用可以应用于测试用例类的注释@RunWith进行插入。默认测试运行器为JUnit4

答案 1 :(得分:0)

JUnit使用标准反射列出方法,并查看它们中是否有任何JUnit注释。如果他们这样做,JUnit使用反射来调用它们。

JUnit的源代码可用,我建议您阅读测试运行器的源代码。