我目前正在为一个基于球衣的简单Web应用程序编写测试,但遇到一个奇怪的问题,即同一类中的不同测试方法似乎正在使用不同的配置。具体来说,我有一个服务类:
@Path("service")
public class WebService {
@Inject
private ApplicationData data;
@GET
@Path("/single/{id}")
public Result singleDo(@PathParam("id") String id) {
logger.info("appData: " + data.getClass().getCanonicalName());
// actually do things
}
@POST
@Path("/bulk")
public Result[] bulkDo(String[] ids) {
logger.info("appData: " + data.getClass().getCanonicalName());
// actually do things
}
该课程当前在实时环境中运行。为了处理训练和测试之间的不同状态变量,我有两个不同的ApplicationData
和ApplicationData
类,它们是TestApplicationData
的子类。我的测试课是:
ApplicationData
我不清楚这两种方法如何或为什么使用public class TestWebService extends JerseyTest {
@Override
protected Application configure() {
ResourceConfig rc = new WebApplication(new TestApplicationData());
rc.register(WebService.class);
return rc;
}
@Test
public void testSingle() {
target("/service/single/1234").request().get();
// this uses TestApplicationData, according to logs
}
@Test
public void testBulk() {
String[] list = new String[1];
list[0] = "1234";
target("/service/bulk").request().post(Entity.entity(list, MediaType.APPLICATION_JSON);
// this uses ApplicationData, according to logs, and does not have information from TestApplicationData
}
}
的不同实例,或者第二种方法甚至如何访问非测试实例。
为什么会这样,该如何解决?