Java单元测试之 Apache CXF Restful

简介: 对于程序员是否有必要编写test case,何时编写依然存在很多争议,各种互斥的方法论(SE/AM/XP/TDD),以及不同的开发文化,但是可以确定是编写单元测试用例有助于提高编程能力。

Apache CXF框架的单元测试需要内置Jetty容器

<dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-webapp</artifactId>
   <version>${jetty.version}</version>
   <scope>test</scope>
</dependency>

下面是一个基于Spring框架的Apache CXF测试示例

applicationContext-restful.xml

<import resource="classpath:META-INF/cxf/cxf.xml" />
 
<context:component-scan base-package="com.faw_qm.cloud.platform.*.restful" />
 
<jaxrs:server id="demoServer" address="/">
   <jaxrs:serviceBeans>
      <ref bean="demoRestful" />
   </jaxrs:serviceBeans>
   <jaxrs:providers>
      <bean class="com.alibaba.fastjson.support.jaxrs.FastJsonProvider" />
   </jaxrs:providers>
   <jaxrs:extensionMappings>
      <entry key="json" value="application/json" />
   </jaxrs:extensionMappings>
</jaxrs:server>

DemoRestful.java

@Path("demo")
@Component("demoRestful")
public class DemoRestful {
 
    @POST
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public String test(String str) {
 
        return "This is a cxf restful test method.";
    }
}

DemoRestfulTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = Application.class)
public class DemoRestfulTest {
 
    public final String REST_SERVICE_URL = "http://localhost:8088/rest";
 
    public final Server server = new Server(8088);
 
    @Before
    public void before() {
        // Register and map the dispatcher servlet
        final ServletHolder servletHolder = new ServletHolder(new CXFServlet());
        final ServletContextHandler context = new ServletContextHandler();
        context.setContextPath("/");
        context.addServlet(servletHolder, "/rest/*");
        context.addEventListener(new ContextLoaderListener());
        context.setInitParameter(
                "contextConfigLocation",
                "classpath*:/applicationContext-restful.xml");
        server.setHandler(context);
        try {
            server.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    @After
    public void after() {
        try {
            server.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    @Test
    public void test() throws Exception {
 
        JSONObject json = new JSONObject();
  
        json.put("name", "test");
 
        WebClient client = WebClient.create(REST_SERVICE_URL);
 
        Response response = client.path("/demo/test")
                    .accept("application/json")
                    .type("application/json; charset=UTF-8")
                    .post(json.toJSONString());
 
        Assert.assertEquals(response.getStatus(), 200);
    }
}
相关文章
|
30天前
|
Java 测试技术 API
Java 新手入门:Java单元测试利器,Mock详解
Java 新手入门:Java单元测试利器,Mock详解
73 1
|
13天前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
33 2
|
19天前
|
消息中间件 Java Kafka
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
|
21天前
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
18 1
|
27天前
CXF WebService wsdl2java
CXF WebService wsdl2java
27 0
|
28天前
|
Java 测试技术
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
23 0
|
1月前
|
Java 测试技术 API
深入理解单元测试:JUnit框架在Java中的应用
【8月更文挑战第3天】本文将引导读者通过JUnit框架的镜头,探索单元测试的奥秘。我们将一起揭开单元测试的神秘面纱,了解其在软件开发中的关键作用,并具体学习如何在Java项目中应用JUnit进行有效的单元测试。文章不仅会涉及理论概念,还将通过具体的代码示例,展示如何编写和运行单元测试,以确保软件质量。让我们开始吧,一起踏上这段提升代码质量和开发效率的旅程。
23 0
|
2月前
|
Java 数据库 Spring
Java编程问题之在测试中使用CGLIB创建代理类如何解决
Java编程问题之在测试中使用CGLIB创建代理类如何解决
|
2月前
|
存储 Java
浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
|
21天前
|
JSON Dubbo 测试技术
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
42 2
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决

推荐镜像

更多