Java 用JUnit测试服务器

Java 用JUnit测试服务器,java,unit-testing,junit,Java,Unit Testing,Junit,我想用JUnit测试我的REST服务器。每个测试向服务器发送一个HTTP请求,并根据响应中预期出现的元素列表检查响应 因此,测试程序如下所示: for each request in test requests send request and receive response assert the response is ok for each element in the expected elements test if the element exists

我想用
JUnit
测试我的REST服务器。每个测试向服务器发送一个HTTP请求,并根据响应中预期出现的元素列表检查响应

因此,测试程序如下所示:

for each request in test requests send request and receive response assert the response is ok for each element in the expected elements test if the element exists in the response 对于测试请求中的每个请求 发送请求和接收响应 断言响应正常 对于预期元素中的每个元素 测试响应中是否存在该元素
如何使用JUnit实现它?

我会在JUnit类中使用
@BeforeClass
方法获取最新版本的服务器并启动它(选择适当的端口等等)。类似地,
@AfterClass
也可用于以编程方式关闭服务器。自动执行此操作非常重要,否则您必须记住让最新版本的服务器持续运行

我假设测试不会更改服务器中的任何数据。如果是这样,那么您可能应该在之前使用
,在
之后使用
,但请记住,这会导致服务器在每次测试时启动/停止,并且可能会导致测试花费不合理的长时间

一旦你有了这个框架,编写测试本身应该很简单


您还可以将其作为“适当的”单元测试来编写,方法是确保RESTful API仅作为普通Java API公开,与网络层隔离。这会更快地运行,并且(如果您的网络层足够薄的话)会发现很多可能的bug。

只是更挑剔一点:OP当然没有提到他想做的是“单元测试”。他刚刚提到了JUnit,它既可以用于单元测试,也可以用于其他类型的测试:)