动手写一个Remoting测试工具

基于.NET开发分布式系统,经常用到Remoting技术。在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间。所以,我想写一个能自动测试remoting接口的小工具InterfaceTester。而且,当分布式系统中的某个remoting接口出现bug时,该小工具可以提交需要模拟的数据,以便在调试remoting服务的环境中,快速定位和解决bug。

  InterfaceTester运行起来后的效果如下图:

1.如何使用

(1)首先,填上要测试的并且是已经发布的Remoting服务的地址信息。

(2)选取要测试的remoting接口所在的程序集,一般是一个dll。选定程序集后,InterfaceTester会自动搜索该程序集中定义的所有接口,并将其绑定到“接口类型”的下拉列表。

(3)从 “接口类型”的下拉列表中选择要测试的接口。选定接口后,InterfaceTester会自动搜索该接口中定义的所有方法,并将其绑定到“目标方法”的下拉列表。

(4)从 “目标方法”的下拉列表中选择要测试的方法,InterfaceTester会根据该方法所要求的参数,自动生成参数录入界面。

(5)在参数录入界面上,输入用于测试的参数的值,然后,点击“调用”按钮, InterfaceTester便会调用上述指定地址的remtoing服务的指定接口的指定方法,如果调用的方法有返回值,则会在“调用返回”的panel上显示该值。如果返回的不是一个简单类型,而是一个对象,则“调用返回”的panel上将会以xml的形式显示这个对象的各个属性值。

2.实现原理

就这个小工具的实现而言,主要用到的技术就是反射(reflection)。另外,需要注意的就是,根据参数的类型,生成录入界面。具体细节大家可以参见源码。目前,InterfaceTester支持的被测试方法的参数类型是有限制的:

(1)支持简单的数据类型,像string、int、bool等。

(2)支持List<>、I List<>、IDictionary<,>、Dictionary<,>等集合类型。

(3)支持简单的数据结构的class(如像Point、自定义的Entity等)。

3.源码解决方案

  下载源码并用VS打开后,解决方案下有三个项目:InterfaceTester、DemoInterface、DemoService。

(1)InterfaceTester项目是我们本文的主角:用于remoting接口测试的小工具。

(2)DemoInterface和 DemoService则是为了试试小工具而构建的一个小demo。 DemoInterface定义了发布的remoting服务的接口, DemoService则是发布的remoting服务。

在试用时,先启动 DemoService项目,再启动InterfaceTester,就可以试试我们的小工具功能了。

4.源码下载

  InterfaceTester

  针对这个remoting接口测试小工具,大家如果有什么好的建议,请留言告诉我:)

动手写一个Remoting测试工具,布布扣,bubuko.com

时间: 2024-10-08 20:27:08

动手写一个Remoting测试工具的相关文章

动手写一个Remoting接口测试工具(附源码下载)

基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间.所以,我想写一个能自动测试remoting接口的小工具InterfaceTester.而且,当分布式系统中的某个remoting接口出现bug时,该小工具可以提交需要模拟的数据,以便在调试remoting服务的环境中,快速定位和解决bug. InterfaceTester运行起来后的效果如下图: 1.如何使用 (1)首

写手Remoting测试工具

基于.NET开发分布式系统.经经常使用到Remoting技术.在測试驱动开发流行的今天.假设针对分布式系统中的每一个Remoting接口的每一个方法都要写具体的測试脚本,无疑很浪费时间.所以,我想写一个能自己主动測试remoting接口的小工具InterfaceTester.并且.当分布式系统中的某个remoting接口出现bug时.该小工具能够提交须要模拟的数据,以便在调试remoting服务的环境中.高速定位和解决bug. InterfaceTester执行起来后的效果例如以下图: 1.怎样

模拟spring - 动手写一个spring AOP

一.前言 AOP (Aspect Oriented Programing) - 面向切面编程,它主要用于日志记录.性能分析.安全控制.事务处理.异常处理等方面. AOP主要使用JDK的反射和动态代理,AOP代理其实是由AOP框架动态生成的一个对象,该对象可作为目标对象使用,AOP代理包含了目标对象的全部方法,但AOP代理的方法与目标对象的方法存在差异:AOP方法在特定切入点添加了增强处理,并回调了目标对象的方法. 动态代理的文章请参考:http://blog.csdn.net/zdp072/ar

死磕 java线程系列之自己动手写一个线程池

欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写的线程池如何测试? 简介 线程池是Java并发编程中经常使用到的技术,那么自己如何动手写一个线程池呢?本文彤哥将手把手带你写一个可用的线程池. 属性分析 线程池,顾名思义它首先是一个"池",这个池里面放的是线程,线程是用来执行任务的. 首先,线程池中的线程应该是有类别的,有的是核心线程,有

经典笔试题:用C写一个函数测试当前机器大小端模式

“用C语言写一个函数测试当前机器的大小端模式”是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 1 #include <stdio.h> 2 3 union test 4 { 5 int a; 6 char b; 7 }; 8 9 int endian_test(void) 10 { 11 union test t1; 12 t1.a = 1; 13 return t1.b; 14 } 15 16 int main(void) 17 { 18 int i =

死磕 java线程系列之自己动手写一个线程池(续)

(手机横屏看源码更方便) 问题 (1)自己动手写的线程池如何支持带返回值的任务呢? (2)如果任务执行的过程中抛出异常了该怎么处理呢? 简介 上一章我们自己动手写了一个线程池,但是它是不支持带返回值的任务的,那么,我们自己能否实现呢?必须可以,今天我们就一起来实现带返回值任务的线程池. 前情回顾 首先,让我们先回顾一下上一章写的线程池: (1)它包含四个要素:核心线程数.最大线程数.任务队列.拒绝策略: (2)它具有执行无返回值任务的能力: (3)它无法处理有返回值的任务: (4)它无法处理任务

自己动手写一个FTP客户端

自己用socket写一个FTP客户端,模拟主动被动模式.(先支持LIST命令) # -*- coding: utf-8 -*- import socket, sys, thread, threading def main_sock(daddr, actions, saddr=()):     if saddr:         try:             sc=socket.create_connection(daddr, 3, saddr)             #print "Now

操刀 requirejs,自己动手写一个

前沿 写在文章的最前面 这篇文章讲的是,我怎么去写一个 requirejs . 去 github 上fork一下,顺便star~ requirejs,众所周知,是一个非常出名的js模块化工具,可以让你使用模块化的方式组织代码,并异步加载你所需要的部分.balabala 等等好处不计其数. 之所以写这篇文章,是做一个总结.目前打算动一动,换一份工作.感谢 一线码农 大大帮忙推了携程,得到了面试的机会. 面试的时候,聊着聊着感觉问题都问在了自己的“点”上,应答都挺顺利,于是就慢慢膨胀了.在说到模块化

自己动手写一个iOS 网络请求库的三部曲[转]

代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/BuildYourHTTPRequestLibrary 开源项目:Pitaya,适合大文件上传的 HTTP 请求库:https://github.com/johnlui/Pitaya 本系列文章中,我们将尝试使用 NSURLSession 技术构建一个自己的网络请求库. NSURLSession 简介 NSURLSession 是 iOS7 引入的新网络请求接口,在 WWDC2013