JUnit 基础测试自动设置
Posted
技术标签:
【中文标题】JUnit 基础测试自动设置【英文标题】:JUnit base test auto setUp 【发布时间】:2013-01-02 14:31:35 【问题描述】:我想编写一个BaseTest
类,它只是为所有扩展子类提供“通用setUp()
方法”:
public class BaseTest
@Before
public void setUp()
System.out.println("setUp() was called!");
// Doesn't really matter what this is doing...
EnvironmentConfigurator.configureEnvForTesting();
然后:
public class WidgetTest extends BaseTest
@Test
public void test1()
fail();
@Test
public void test2()
fail();
因此,理想情况下,每次执行由@Test
注释的子类方法时,JUnit 都会首先调用BaseTest#setUp()
方法,该方法可以执行任何操作(并不重要)。也许它将一些模拟状态重置为初始值,以便每个测试都可以从“干净的状态”开始,等等。同样,这并不重要。
不幸的是,当我运行这段代码时,我只看到setUp() was called!
打印到屏幕一次,所以很明显BaseTest
并没有按照我想要的方式“包装”我的@Test
方法。有什么办法可以做到这一点?提前致谢!
【问题讨论】:
【参考方案1】:我刚刚运行了这个,两个测试方法都被调用了,两次 setUp 都被调用了。
如果您在派生类中也有 @Before
注释方法,那么您需要将基类设置方法命名为不同的名称,例如setUpBase() 因为如果方法名称相同,则只调用派生类中的 @Before
注释方法,因为它会覆盖基类中的方法。
【讨论】:
感谢@Bedwyr Humphreys (+1) - 我将fail()
语句更改为分号(强制测试方法通过),是的,父 setUp()
方法被调用了两次。因此,必须有一些关于使用此设置与失败的测试用例相结合的方法,导致setUp()
方法只被调用一次。再次感谢。
我用 fail() (在 Eclipse 中)运行它,它仍然被调用了两次
奇怪...好吧没关系,删除fail()
s 工作,所以我很高兴去。再次感谢。
呵呵。我太愚蠢了 :) 我也使用了相同的方法名称,我想知道为什么它没有被调用。谢谢。 +1以上是关于JUnit 基础测试自动设置的主要内容,如果未能解决你的问题,请参考以下文章
我在Eclipse中使用Java建立了一个简单的自动化框架,但是无法通过Junit运行Cucumber测试
JUnit4、Spring、Hibernate 测试上下文设置