java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的的接口,从而简单的达到动作的请求者和动作的执行者解耦的目的.

下面用一个简单的实例测试简单的命令模式,同时采用spring ioc的方式+testNG的测试方式,实现遥控器的遥控开灯的命令模式实现和测试.

1.建立命令接口,包含执行方法,命令对象必须要实现的,执行方法就是暴露的接口方法,提供于接收者调用.

public interface Command {
void execute();
}

2.建立命令对象,实现命令接口,同时要包含动作执行者的引用.而且要用注解@Compent 方便spring的扫描加载程bean @Resource注入灯的实例

@Component
public class LightOnCommand implements Command { @Resource
private Light light; @Override
public void execute() {
light.lightOn();
} }

3.建立灯的实现类,接受者,实际的打开灯对象

@Component
public class Light {
public void lightOn() {
System.out.println("开灯!!");
} }

4.建立遥控器的类,发出打开灯的命令,同时引入命令对象,buttonPress方法,按下按钮,打开灯.

@Component
public class RemoteControl { @Resource
private Command lightOnCommand; public void buttonPress() {
lightOnCommand.execute();
} }

5.ok 现在一个简单的命令模式就建立完毕,下面使用TESTNG的基于IOC的方式 测试上面的遥控器的命令模式代码的正确:首先,建立spring-test.xml的资源文件,

方便定义需要扫描的路径,加载我们注解生成的bean.定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.suning.soa.lilin.test"></context:component-scan>
</beans>

6.建立BaseTest的测试类:主要是为了继承AbstractTestNGSpringContextTests,来启动SpringContext,方便其他的测试类集成BaseTest使用

public abstract class BaseTest extends AbstractTestNGSpringContextTests {

}

7.建立主要的遥控器测试类,RemoteControlTest:

@ContextConfiguration(locations = { "classpath:/conf/spring/spring-test.xml" }) 主要是指定Spring的ContextLoader需要加载context文件.
@Test 是TESTNG的开启测试的方法.注入需要测试的遥控器的对象,测试简单的命令模式.
@ContextConfiguration(locations = { "classpath:/conf/spring/spring-test.xml" })
public class RemoteControlTest extends BaseTest { @Resource
RemoteControl remote; @Test
public void test() {
remote.buttonPress();
} }

最后,运行TESTGN的测试方法,可以得到正确的开灯的结果展示.so 一个简单的遥控器开灯的命令模式的测试实例总结完毕.

Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式的更多相关文章

  1. 在Eclipse中开发使用Spring IOC的JUnit/TestNG测试用例之详解

    转载自:http://blog.csdn.net/radic_feng/article/details/6740438 我们期望能像在产品代码中一样,在测试用例中使用的bean也由Spring Con ...

  2. Spring IOC 一——容器装配Bean的简单使用

    下文:SpringIOC 二-- 容器 和 Bean的深入理解 写在前面 这篇文章去年写的,缘起于去年某段时间被领导临时"抓壮丁"般的叫过去做java开发,然后在网上找了一个 Sp ...

  3. Spring系列(二):Spring IoC/DI的理解

    这几天重新学习了一下Spring,在网上找了相关的ppt来看,当看到Spring IoC这一章节的时候,先大致浏览了一下内容,有将近50页的内容,内心窃喜~QAQ~,看完这些内容能够对IoC有更深层次 ...

  4. 类spring ioc 泛型保留

    类spring ioc 泛型保留 什么是泛型擦除 Java并不会传递泛型类,举个直观的栗子: @Component public class BaseProvider<T> { publi ...

  5. 应聘阿里,字节跳动,美团必须掌握的Spring IOC与工厂模式

    Spring IOC与工厂模式 PS:本文内容较为硬核,需要对java的面向对象.反射.类加载器.泛型.properties.XML等基础知识有较深理解. (一)简单介绍 在讲Spring IOC之前 ...

  6. 深入理解Spring IOC容器

    本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...

  7. 深入理解Spring IOC容器及扩展

    本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...

  8. Spring IOC 注入方式详解 附代码

    引言 Spring框架作为优秀的开源框架之一,深受各大Java开发者的追捧,相信对于大家来说并不陌生,Spring之所以这么流行,少不了他的两大核心技术IOC和IOP.我们这里重点讲述Spring框架 ...

  9. Spring IOC 源码简单分析 03 - 循环引用

    ### 准备 ## 目标 了解 Spring 如何处理循环引用 ##测试代码 gordon.study.spring.ioc.IOC03_CircularReference.java   ioc03. ...

随机推荐

  1. flex经验记录(转载)

    最近一直忙于项目,很好抽出时间学习,刚忙里偷闲浏览博客看到一位博友总结的一些flex的经验,感觉不错就转载过来,一来扩散一下,二来保存下来,以后忘记的时候可以回来学习下. 原博文地址:http://b ...

  2. mistral 工作流组件之二 思维导图

    Mistral 思维导图

  3. C++ 什么是句柄?为什么会有句柄?HANDLE

    出处:http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html 从广义上,能够从一个数值拎起一大堆数据的东西都可以 ...

  4. Could not find action or result

    [WARN ] 2013-11-21 14:08:16 :Could not find action or resultThere is no Action mapped for namespace ...

  5. 洛谷P1529 回家 Bessie Come Home

    P1529 回家 Bessie Come Home 题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出 ...

  6. java 中的fanal

    三.java中有final final 修饰符 关键字可用于修饰类,变量和方法,final关键字有点类似于C#里的sealed 关键字,用于表示它修饰的类,方法和变量不可改变. fina修饰变量时,表 ...

  7. 【.NET】对文件的对称加密

    using System;using System.IO;using System.Security.Cryptography;namespace ConsoleApp_SymmetricalEncr ...

  8. SVN更新、清理乱码解决

    我的电脑信息 win7 64bit svn版本: 先介绍一种最简单的方法,一般都会有效,疑难杂症请用第二种 方法一: 将前面6项全部选上--> [确定] 无效请仔细看下面方法二方法详解 方法二: ...

  9. WindowsPhone使用HtmlAgilityPack解析HTML

    NuGet里添加HtmlAgilityPack的引用 然后wp上使用必须添加本地 C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libr ...

  10. MySQL深入利用Ameoba实现读写分离

    3 ameoba安装配置   3.1 安装配置JDK [root@stu15 ~]# rpm -ivh jdk-7u67-linux-x64.rpm [root@stu15 ~]# cd /usr/j ...