IDEA 创建 Jersey 项目及增加单元测试的流程。
1. 创建 Jersey 项目
在 IDEA 中按以下步骤操作:New Project --> Maven --> Create from archetype --> org.glassfish.jersey.archetypes:jersey-quickstart-webapp --> jeresy-quickstart-webapp:2.29.1
。 如图:
然后 Next
,填写 GroupId 和 ArtifactId ,选择项目路径等等,直到完成。
2. 配置 Run
在 IDEA 中按以下步骤操作:Run --> Edit Configurations --> "+" --> Tomcat Server --> Local --> Server --> Application server --> Configure...
。如图:
注意,HTTP port
需要设置为一个为被占用的端口,例如:如果 8080 端口已经被其他应用占用,这里就可以换成 8081。如图:
然后配置编译文件的存放位置。 Deploymeng --> "+" --> Artifact... --> test:war exploded --> Edit Artifact --> Output directory
填写存放目录。
3. 运行项目
Run --> Run 'Tomcat'
打开浏览器即可看到效果。
4. 添加单元测试
支持 JUnit 和 TestNG 两种测试框架
使用 JUnit 测试框架:
在 pom.xml
中添加 container 依赖:
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>${jersey.version}</version>
</dependency>
添加测试方法:
package jerseytest;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import javax.ws.rs.core.Application;
import static org.junit.Assert.assertEquals;
public class MyResourceTest extends JerseyTest {
@Override
protected Application configure() {
return new ResourceConfig(MyResource.class);
}
@Test
public void testGetIt() {
final String hello = target("myresource").request().get(String.class);
assertEquals("Got it!", hello);
}
}
使用 TestNG 测试框架:
在 pom.xml
中添加 container 和 TestNG 依赖:
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
添加测试方法:
package com.supermap.atlab;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTestNg;
import org.testng.annotations.Test;
import javax.ws.rs.core.Application;
import static org.testng.AssertJUnit.assertEquals;
public class MyResourceTest extends JerseyTestNg.ContainerPerClassTest {
@Override
protected Application configure() {
return new ResourceConfig(MyResource.class);
}
@Test
public void testGetIt() {
final String hello = target("myresource").request().get(String.class);
assertEquals("Got it!", hello);
}
}
更多信息请参阅文档 Jersey Test Framework
网友评论