2012-06-04 51 views
0

我使用JUnit自动执行功能测试。我遇到了一个问题:如果遵循“每个测试方法一个(重要)断言”的规则,那么每个测试用例(17个是最大的数字)最终会产生一堆6线测试方法。如果我把它们都放到一个测试方法中,我必须评论失败的断言,或者让一半的测试永远不会启动。JUnit - 推迟声明失败

我不喜欢第一种方式,因为它会启动浏览器次数过多,并且看起来浏览器启动+登录/注销是更“贵”和耗时比试运行本身。

第二种方法是再好不过的,因为它引入了大量的手工操作在管理它的任何情况。

所以,我的问题是:1。 是什么这种情况下,最好的做法是什么? 2.是否有某种方法可以将测试失败推迟到测试结束?我的意思是,不太重要的断言是,这并不能阻止测试运行,但最终会导致测试失败。

UPD:是的,我使用的硒。而且我有一个每个测试课的父类来统一他们的设置。

回答

0
  1. 您可以使用@BeforeClass和@AfterClass为每个测试类一旦启动和关闭浏览器,也可以创建一个启动您的浏览器规则与@ClassRule使用它。
  2. ErrorCollector可能会有帮助。
+0

谢谢!似乎我正在寻找像ErrorCollector。希望我还没有开始创造我自己的自行车来做到这一点:)你能推荐一些教程或使用它的例子吗? – NothisIm

+0

只有JavaDoc,但如果您提供当前的测试,我可以帮助您。 –

0
@BeforeClass 
public static void beforeClass(){ 

    launchBrowser(); 

} 

@Before 
public void before() { 

    login(); 

} 

@AfterClass 
public static void beforeClass(){ 

    killBrowser(); 

} 

这可能是回答你的问题

+0

谢谢,在某些情况下可以做到。但是BeforeClass和AfterClass方法需要静态变量 - 因此,浏览器实例对此应该是静态的。我计划在不久的将来同时启动测试。这可能会弄乱一切。 – NothisIm

+0

当时我通过在每个类的构造函数中启动浏览器来实现该目标 –

+0

并且每个类都有一个驱动程序实例。我们在谈论硒吗?也许你可以添加到你的问题thx –