Jersey 搭建单元测试环境

IDEA 创建 Jersey 项目及增加单元测试的流程。

1. 创建 Jersey 项目

在 IDEA 中按以下步骤操作:New Project --> Maven --> Create from archetype --> org.glassfish.jersey.archetypes:jersey-quickstart-webapp --> jeresy-quickstart-webapp:2.29.1。 如图:

1.png

然后 Next ,填写 GroupId 和 ArtifactId ,选择项目路径等等,直到完成。

2. 配置 Run

在 IDEA 中按以下步骤操作:Run --> Edit Configurations --> "+" --> Tomcat Server --> Local --> Server --> Application server --> Configure...。如图:

1.png

注意HTTP port 需要设置为一个为被占用的端口,例如:如果 8080 端口已经被其他应用占用,这里就可以换成 8081。如图:

3.png

然后配置编译文件的存放位置。 Deploymeng --> "+" --> Artifact... --> test:war exploded --> Edit Artifact --> Output directory 填写存放目录。

1.png

3. 运行项目

Run --> Run 'Tomcat' 打开浏览器即可看到效果。

1.png

4. 添加单元测试

支持 JUnit 和 TestNG 两种测试框架

使用 JUnit 测试框架:

pom.xml 中添加 container 依赖:

        
            org.glassfish.jersey.test-framework.providers
            jersey-test-framework-provider-grizzly2
            ${jersey.version}
        

添加测试方法:

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 依赖:

        
            org.glassfish.jersey.test-framework.providers
            jersey-test-framework-provider-grizzly2
            ${jersey.version}
        
        
            org.testng
            testng
            6.14.3
        

添加测试方法:

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

你可能感兴趣的:(Jersey 搭建单元测试环境)