每次运行任何测试时@BeforeClass仍在运行该方法

时间:2010-10-05 06:29:19

标签: testing junit annotations

我正在使用@BeforeClass注释来确保在一组5-6个测试中只完成一组活动。有3个java文件的层次结构。

File1扩展了TestCase

File2扩展文件1 (这是我必须在setUp方法中放置beforeclass注释的地方)

File3扩展File2 (文件3的测试数量为5,但我希望文件2中的设置只运行一次)

现在,文件2中的setUp方法在File3中的每个测试之前被调用。甚至在放入@BeforeClass注释之后。我该怎么做才能确保此设置仅对文件3中的所有测试运行一次

2 个答案:

答案 0 :(得分:2)

由于您正在扩展TestCase类,因此在每次测试开始之前调用setUp方法。对于junit 4以上,您不需要扩展TestCase类。只是尝试删除它,它应该工作。您还需要在测试方法

上添加@Test注释

答案 1 :(得分:2)

我怀疑您使用的是JUnit 3 TestRunner,它忽略了注释并仅使用命名约定(其中setUp()通常在每次测试之前运行)。尝试使用@Test注释但不以“test”开头的方法 - 如果没有运行,则使用JUnit 3 TestRunner。

因此,要解决此问题,请使用JUnit 4 TestRunner启动测试套件。