我正在尝试编写一个特定的JUnit Runner,但我没有在网上找到好的教程/示例。
要求如下:
@BeforeClass
方法需要运行@BeforeClass
方法只能启动一次。@Before
和@After
方法。话虽如此,我看了不同的选择。
我首先使用提供的junit Suite Runner创建代表我的测试类别的Test Suites
。 (@RunWith(Suite.class)
)
您需要使用令人讨厌的Tests
在套件中手动提供@SuiteClasses()
。
所以我查看了ClasspathSuite
Runner,它允许在每个套件中放置类路径中的所有类,并在使用@Category
后过滤它们
它还提供了@BeforeSuite
注释,该套件在套件启动时启动一次。
=>一切都近乎完美。
@BeforeClass
Test Suite
时,会启动正确的Tests
(感谢@Category
),@BeforeSuite
只会被调用一次,但是@BeforeClass
每次测试都会调用,不应该调用。=>所有这些事情促使我考虑实施自己的Runner。 我尝试扩展ClasspathSuite Runner,但它不是为此而设计的。 我尝试扩展套件Runner,但我没有成功。
您能帮助我了解如何在JUnit Runner中实现这些要求吗?
答案 0 :(得分:1)
如果不写跑步者怎么办?相反,编写一个@BeforeClass
方法,该方法使用单个列表记录在当前测试运行中运行的每个前类别方法,并知道如何运行所有前类别方法(每个方法可能都在自己的方法中)类)。 @BeforeClass
方法确定其类@Category
,检查列表和
@Category
的分类前方法已经运行,则@Category
方法。不需要自定义运行器更好,因为它可以在提供自己的运行程序的环境中工作,例如IDE和持续集成服务器。