我看过很多很好的文章解释JUnit和解释Annotations的文章,但没有解释这两者如何实际联系在一起。
我知道注释@test
位于您希望用于JUnit测试的方法前面,但有人可以解释后台发生了什么吗?
如何将注释转换为有用的Java代码?它发生在哪里?我怎么能自己制作这样的东西?
答案 0 :(得分:2)
JUnit在注释之前诞生。那个时候必须使用前缀test
调用所有测试方法。例如
testX()
testSomeStuff()
等等。
此外,所有测试用例都必须从抽象类TestCase
进行扩展,该类具有通过反射提取所有非参数而不是以test
开头并运行它们的静态方法来检查实际类的方法。
然后JUnit4到了。不推荐使用TestCase
和测试命名约定。而是引入了测试运行器和注释。然而这个想法仍然存在测试运行器检查测试用例类,提取使用@Test
注释注释的所有方法并运行它们。测试运行器也可以使用可以应用于测试用例类的注释@RunWith
进行插入。默认测试运行器为JUnit4
。
答案 1 :(得分:0)
JUnit使用标准反射列出方法,并查看它们中是否有任何JUnit注释。如果他们这样做,JUnit使用反射来调用它们。
JUnit的源代码可用,我建议您阅读测试运行器的源代码。