java - JUnit 基础测试自动设置

标签 java unit-testing junit

我想编写一个 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() 被调用了! 打印到屏幕上一次,很明显 BaseTest 不是不要按照我想要的方式“包装”我的 @Test 方法。有什么办法可以做到这一点?提前致谢!

最佳答案

我刚刚运行了这个程序,两个测试方法都被调用了,而且两次 setUp 都被调用了。

如果您在派生类中也有一个 @Before 注释方法,那么您需要将基类设置方法命名为不同的名称,例如setUpBase() 因为如果方法名称相同,则仅调用派生类中的 @Before 注释方法,因为它将覆盖基类中的方法。

关于java - JUnit 基础测试自动设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123831/

相关文章:

java - 使用Spring Security的Principal进行单元测试方法

c# - 比较 XML 文件是否相等的最佳方法是什么?

android - 无法解析 Android JUnit 测试运行程序

java - 如何编写使用 XML 的测试用例?

java - 正则表达式替换如果变量与字符串不匹配

Java - 逐行 'debug report'

java - MySQL/Hibernate SQLQuery 如何将 unsigned int(10) 转换为smallint?

java - Weblogic消息驱动bean调用错误

unit-testing - cakephp 单元测试模型,fixtures 问题

java - Selenium:在 Java 中使用 cssSelector 提取 div 的文本