Con*_*nan 1 groovy junit annotations
我习惯于JUnit在子类中的@Before方法之前在超类中运行@Before方法.但是,我有一个继承自另一个Groovy类的Groovy测试类,它们都包含@Before方法; 我遇到的问题是测试类中的@Before方法在其超类中的方法之前运行,并且我从未初始化的变量获得NPE(超类应该处理它).
超类是这样的:
import groovyx.net.http.RESTClient
import org.junit.Before
abstract class BaseTestClass {
def client
@Before
void setUp() {
client = new RESTClient()
}
}
Run Code Online (Sandbox Code Playgroud)
子类是这样的:
import org.junit.Before
class TestClass extends BaseTestClass {
@Before
void setUp() {
client.post(path: '/entity', body: '{"id":"test"}')
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个简化版本,但是我得到了错误: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().孩子的setUp()方法会覆盖父母的方法.所以这条线client = new RESTClient()永远不会被调用.
只需选择另一个名字.
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |