这是我的pom.xml
(部分内容):
[...]
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-embedded-glassfish</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
[...]
这是测试:
public class FooTest extends JerseyTest {
public FooTest() throws Exception {
super("com.XXX");
}
@Before
public void setUp() throws Exception {
}
@Test
public void shouldWork() throws Exception {
}
}
这就是我在日志中得到的内容:
com.sun.jersey.test.framework.spi.container.TestContainerException: org.glassfish.embed.EmbeddedException: You must start the server before calling this API method: EmbeddedDeployer.EmbeddedDeployer Constructor.
at com.sun.jersey.test.framework.spi.container.embedded.glassfish.EmbeddedGlassFishTestContainerFactory$EmbeddedGlassFishTestContainer.stop(EmbeddedGlassFishTestContainerFactory.java:154)
at com.sun.jersey.test.framework.JerseyTest.tearDown(JerseyTest.java:312)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[...]
当我从课程中删除setUp()
方法时,一切正常。这有什么不对?
答案 0 :(得分:2)
在设置中尝试super.setUp();
。
删除后,它会调用其继承的super
版本。这很好。
但是当你添加自己的setUp时,你已经覆盖了super's
版本。
答案 1 :(得分:1)
您无意中覆盖了其setUp()
方法。尝试将其名称更改为其他名称,为什么不说出来,before()
。
原始setUp()
方法通过调用TestContainer.start()
来调用测试容器。在你的情况下,它无法做到这一点,因为你覆盖了方法,从未对super.setUp()
进行任何调用。因此,它抱怨You must start the server.... so and so
。