groovy - Groovy 中的 JUnit @Before 方法排序

我习惯于 JUnit 在子类中的 @Before 方法之前在父类(super class)中运行 @Before 方法。但是,我有一个继承自另一个 Groovy 类的 Groovy 测试类,它们都包含 @Before 方法;我遇到的问题是测试类中的@Before 方法在其父类(super class)中的方法之前运行,并且我从未初始化的变量中获取 NPE(父类(super class)应该处理这个问题)。

父类(super class)是这样的:

import groovyx.net.http.RESTClient
import org.junit.Before

abstract class BaseTestClass {
    def client

    @Before
    void setUp() {
        client = new RESTClient()
    }
}

子类是这样的:

import org.junit.Before

class TestClass extends BaseTestClass {

    @Before
    void setUp() {
        client.post(path: '/entity', body: '{"id":"test"}')
    }

    ...
}

这是一个简化版本,但我收到错误:java.lang.NullPointerException: Cannot invoke method post() on null object 在子类的 setUp() 方法中。任何想法可能导致这种行为?所有文档都说它应该是相反的,我以前从未经历过任何不同。

我正在使用 maven-failsafe-plugin、junit-4.10 和 jdk-1.6.0_31 运行。有趣的是,我在同一个地方(同一个包、同一个项目、同一个目录)有其他 Groovy 测试类,它们没有遇到这个问题——@Before 方法的顺序是正确的;此外,它似乎是确定性的 - 它总是有问题的同一个测试类。

谢谢!

最佳答案

您将两个@Before 方法命名为setUp()。 child 的 setUp() 方法覆盖了 parent 的方法。所以行 client = new RESTClient() 永远不会被调用。

只需选择另一个名称即可。

https://stackoverflow.com/questions/11316755/

相关文章:

asp.net - 在 c# asp.net 中执行查询

php - 如何在 preg_match_all php 中获取组的值?

php - 本地主机的 Instagram redirect-uri 失败

variables - Makefile 字符串变量

php - 如何通过PHP检测用户断开连接?

sql - 减去 vs 删除 oracle 中存在的地方

regex - 检查目录是否存在递归地反转路径

php - Uniqid 每次返回相似的值

sql - 存储过程返回的别名列 [SQL Server 2008]

wpf - 在 XAML 中使用图像向按钮添加鼠标悬停效果