Java Jersey测试中的不同行为

Java Jersey测试中的不同行为,java,web-services,jersey,Java,Web Services,Jersey,我有一个使用Jersey实现的服务,该服务从JSON文件读写,我有一个扩展JerseyTest类的测试文件,用于测试该服务 我试图做的是,当运行测试时,它在另一个名为“\u test”的文件中写入/读取。这样我就不会改变主文件中的值 该文件在@PostConstruct方法中实例化,如下所示: @施工后 公共无效初始{ 试一试{ jsonFile=NewsJson;//需要有不同的行为进行测试 }捕获ioe异常ioe{ LOGGER.errorError创建文件:+ioe.getMessage;

我有一个使用Jersey实现的服务,该服务从JSON文件读写,我有一个扩展JerseyTest类的测试文件,用于测试该服务

我试图做的是,当运行测试时,它在另一个名为“\u test”的文件中写入/读取。这样我就不会改变主文件中的值

该文件在@PostConstruct方法中实例化,如下所示:

@施工后 公共无效初始{ 试一试{ jsonFile=NewsJson;//需要有不同的行为进行测试 }捕获ioe异常ioe{ LOGGER.errorError创建文件:+ioe.getMessage; } } 我尝试的是调用@POST方法来修改jsonFile变量,激活在不同文件中的写入。该解决方案中的问题是每个请求都调用@PostConstruct方法


我怎样才能改变这种行为?使用Jersey初始化服务是否有不同的注释?

并添加到我的注释中,因为这看起来像是答案:


如果您真的希望只构造一次,请将scope更改为@Scopesingleton,这将导致jersey bean实例化一次,而不是每个请求实例化一次。

我得到了一个可接受的解决方案。为每个请求添加头参数的想法帮助很大。我创建了一个名为Service的超类,它有一个头参数,如下所示:

@头部参数测试 私有布尔测试; 之后,我创建了一个方法ISTest来获取这个变量的值。因此,在我的服务NewsService中,我扩展了super类服务,并在它的@PostConstruct方法上执行了以下操作:

如果是测试{ jsonFile=NewsJsonNewsJson.TEST_文件; }否则{ jsonFile=notifiaJSON; } 我所需要改变的只是我的单元测试方法,在请求中添加一个头变量:

webResource.headertesting,true
是否确实要在构造中初始化文件?为什么不能在POST操作本身中创建此文件?您可以根据一些HTTP头和更改jsonFile的创建来区分测试请求和生产请求?在这种情况下,我如何处理多个并发请求?好的,这就是我最初在评论中的意思。