事实证明,JUnit希望@BeforeClass
和@AfterClass
是静态的,并且这与JerseyTest的configure
方法覆盖相处并不好。是否有一种已知的方法来配置Jersey应用程序,同时仍然能够访问JUnit的实用程序方法?
public class MyControllerTest extends JerseyTest {
@BeforeClass
public static void setup() throws Exception {
target("myRoute").request().post(Entity.json("{}"));
}
@Override
protected Application configure() {
return new AppConfiguration();
}
}
因此beforeClass
需要是静态的,target
因其实例方法性质而无法调用。在尝试使用构造函数时,事实证明configure
在constructor
之后运行,这可以防止执行设置请求,并因此自然失败。
任何建议都非常感谢,谢谢!
答案 0 :(得分:1)
我们在几种情况下所做的是为了避免在这种情况下进行繁重的设置是使用布尔标志来有条件地运行该设置。
public class MyControllerTest extends JerseyTest {
private static myRouteSetupDone = false;
@Before
public void setup() throws Exception {
if (!myRouteSetupDone) {
target("myRoute").request().post(Entity.json("{}"));
myRouteSetupDone = true;
}
}
@Override
protected Application configure() {
return new AppConfiguration();
}
}
答案 1 :(得分:-2)
@Before 不需要 static 修饰符,并且会在每个测试方法之前执行。