JBuilder Weblogic

Similar documents
(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

EJB-Programming-3.PDF

EJB-Programming-4-cn.doc

IoC容器和Dependency Injection模式.doc

untitled

chp6.ppt

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Microsoft Word - 01.DOC

基于ECO的UML模型驱动的数据库应用开发1.doc

Microsoft PowerPoint - ch6 [相容模式]

RunPC2_.doc

基于CDIO一体化理念的课程教学大纲设计

untitled

Microsoft Word - 物件導向編程精要.doc

Chapter 9: Objects and Classes

Java

D C 93 2

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

untitled

JavaIO.PDF

untitled

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

《大话设计模式》第一章

提问袁小兵:

(procedure-oriented)?? 2

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

untitled

Microsoft PowerPoint - plan08.ppt

Oracle 4

Microsoft Word - ch04三校.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

untitled

Microsoft PowerPoint - L17_Inheritance_v4.pptx

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

Wy159.mps

ebook 96-16

RUN_PC連載_12_.doc



untitled

untitled

Chapter 9: Objects and Classes

ebook140-8

untitled

FAQ -PowerDesigner9.5.DOC

FileMaker 16 ODBC 和 JDBC 指南

FY.DOC

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

mvc

FileMaker 15 ODBC 和 JDBC 指南

入 学 考 试 重 点 考 查 学 生 的 基 础 专 业 知 识 基 本 实 验 操 作 技 能 独 立 思 考 和 动 手 能 力 笔 试 和 面 试 的 试 题 都 有 足 够 的 难 度, 以 利 择 优 录 取 新 录 取 的 研 究 生 第 一 次 见 面, 池 先 生 会 作 一 次

untitled

设计模式_Patterns in Java_.doc

全国计算机技术与软件专业技术资格(水平)考试

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

PMT Review R

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

RunPCPB8 new feature.PDF

epub83-1

javaexample-02.pdf

PPBSalesDB.doc

在 ongodb 中实现强事务

计 算 机 系 统 应 用 年 第 25 卷 第 4 期 线 程 的 复 用 [2,3]. 通 常 情 况 下, 服 务 器 端 程 序 在 启 动 时 创 建 若 干 数 量 的 线 程 对 象 并 缓 存 起 来, 此 时 它 们 处 于

untitled

Learning Java

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

新版 明解C++入門編

基于UML建模的管理管理信息系统项目案例导航——VB篇

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

Java 1 Java String Date

Guide to Install SATA Hard Disks

13 A DSS B DSS C DSS D DSS A. B. C. CPU D. 15 A B Cache C Cache D L0 L1 L2 Cache 16 SMP A B. C D 17 A B. C D A B - C - D

AL-M200 Series

D2 17/10 食 完 早 餐 去 中 山 陵 和 明 孝 陵, 灵 谷 寺 到 景 区 的 巴 士 : 游 1 游 2 游 路 ( 票 价 在 1-2 元 间 ) 三 个 地 点 中 间 凭 门 票 免 费 乘 坐 景 区 小 火 车 往 来 晚 上 有 力 气 的 话 去 夫 子

2007

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

untitled

Servlet

RUN_PC連載_10_.doc

ZHFX1302.mps

关于试行《高等学校从事有害健康工种人员营养保健等级和标准的暂行规定》的通知

untitled

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

ebook140-9

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

Microsoft PowerPoint - Lecture7II.ppt

SQL Server SQL Server SQL Mail Windows NT

概述

人 物 訪 中 華 技 術 I N T E R V I E W 壹 前 言 當 您 搭 乘 台 鐵 縱 貫 線 南 下 列 車, 於 駛 入 高 雄 岡 山 地 區 時, 映 入 眼 簾 的 是 一 座 佔 地 約 30,000 坪 的 綠 色 巨 型 鋼 構 廠 房 及 碩 大 的 皆 豪 鋼 構

Transcription:

JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC XUnit The Smalltalk Best Practice Patterns Extreme Programming Explained Planning Extreme Programming Martin Fowler JUnit JUnit JUnit 2 JUnit JUnit Patterns Generate Architectures "Patterns Generate Architectures", Kent Beck and Ralph Johnson, ECOOP 94 Junit 1/1

3 JUnit 3.1 Command 3.1.1 JUnit framework TestCase ( ) JUnit JUnit JUnit TestCase JUnit TestCase 3.1.2 Command Gamma, E., et al. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995 intent "..."Command "execute " 3.1.3 Command Test, Run Command Execute Default Adapter TestCase Test Test run() TestCase run() Test counttestcases TestCase Command Excecute run TestResult public interface Test { // Counts the number of test cases that will be run by this test. public abstract int counttestcases(); //runs a test and collects its result in a TestResult instance. public abstract void run(testresult result); Junit 2/2

TestCase TestCase public abstract class TestCase extends Assert implements Test { //the name of the test case private String fname; public void run(testresult result) { result.run(this); TestCase run JUnit run TestResult 3.1.4 Command Command TestCase JUnit Command TestCase TestCase Command TestCase TestSuit Composite Command TestCase Junit Fromwork, Command Undo Redo Log, JUnit 3.2 Composite 3.2.1 Command JUnit JUnit. TestCase TestCase TestCase Junit if issingletestcase(objectrequest) { // TestCase, run (TestCase)objectRequest.run() else if(iscompositetestcase(objectrequest)){ // TestCase, // TestCase // Junit 3/3

JUnit TestCase testcase testcase JUnit TestCase TestCase 3.2.2 JUnit Composite " ' - ' Composite " ' - ' TestCase TestCase TestSuit Composite Composite Component Test run Composite TestSuit Leaf TestCase, componsite JUnit TestCase 3.2.3 composite Component Leaf composite Java Composite Test leaf TestCase //composite Component public interface Test { Junit 4/4

public abstract void run(testresult result); //composite Leaf public abstract class TestCase extends Assert implements Test { public void run(testresult result) { result.run(this); Composite TestSuit TestSuit ftests (Vector ) addtest TestCase, testcount tests run() delegate addtestsuite public class TestSuite implements Test { private Vector ftests= new Vector(10); public void addtest(test test) { ftests.addelement(test); public Enumeration tests() { return ftests.elements(); public void run(testresult result) { for (Enumeration e= tests(); e.hasmoreelements(); ) { Test test= (Test)e.nextElement(); runtest(test, result); public void addtestsuite(class testclass) { addtest(new TestSuite(testClass)); Composite Test TestCase TestSuit Test addtestsuite TestSuite TestSuite TestSuit Junit 5/5

TestSuit TestCase public static Test suite() { TestSuite suite1 = new TestSuite(" TestSuit1"); TestSuite suite2 = new TestSuite(" TestSuit2"); suite1.addtestsuite(untitled6.testmath.class); suite2.addtestsuite(untitled6.testmulti.class); suite1.addtest(suite2); return suite1; 3.2.4 Composite JUnit JUnit TestSuite TestCase JUnit if else TestCase TestSuite TestCase TestSuite TestCase Decorate TestCase 3.3 Template Method 3.3.1 Connection public void testupdate(){ // Load the Oracle JDBC driver and Connect to the database DriverManager.registerDriver(new oracle.jdbc.oracledriver()); String url = "jdbc:oracle:thin:@localhost:1521:ora91"; Junit 6/6

Connection conn = DriverManager.getConnection (url, "hr", "hr"); // Select first_name and last_name column from the employees table ResultSet rset = stmt.executequery ("select FIRST_NAME, LAST_NAME from EMPLOYEES"); // Disconnect conn.close (); EJB JNDI LookUp Home TestCase Insert Update Delete Select connection JUnit 3.3.2 Template Method Template Method Template Method AbstractClass ConcreteClass AbstractClass ConcreteClass ConcreteClass 3.3.3 TestCase Junit 7/7

TestCase public abstract class TestCase extends Assert implements Test { // protected void setup() throws Exception { protected void runtest() throws Throwable { protected void teardown() throws Exception { // public void runbare() throws Throwable { setup(); runtest(); teardown(); setup EJB Home JNDI teardown runtest TestCase runbare setup, runtest, teardown, public class TestHelloWorldTestClientJUnit1 extends TestCase { public void setup() throws Exception { initialize();// JNDI create(); // EJB Home public void testgetmessage() throws RemoteException { assertnotnull(error_null_remote, helloworld); this.assertequals("hello World",helloWorld.getMessage(""));// public void teardown() throws Exception { helloworldhome = null; // EJB Home helloworld = null; // EJB setup teardown testgetmessage runtest Adapter testgetmessage runtest Junit 8/8

TestCase runbare() runtest() setup() teardown() TestHelloWorldTestClientJUnit1 setup() teardown() testgetmessage() 3.3.4 Template Method TestCase JUnit 3.4 Adapter 3.4.1 Command Command execute() TestCase run() command Testcase run testrun setup teardown testrun testgetmessage testsetmessage command JUnit 3.4.2 Adapter testgetmessage JUnit Command TestCase run Adapter Junit 9/9

Target Adaptee Adapter 3.4.3 TestCase public void testxxxxx() Adapter Command runtest java protected void runtest() throws Throwable { // testgetmessage runtest Method runmethod= getclass().getmethod(fname, null); runmethod.invoke(this, new Class[0]); Target Adapter,TestCase Adaptee TestCase runtest() TestHelloWorldTestClientJUnit1 testgetmessage() 3.4.4 Adapter Adapter Adapter Adaptee 3.5 Observer 3.5.1 JUnit failureserrors Junit 10/10

assertion ArrayIndexOutOfBoundsException GUI JUnit Text,AWT,Swing JUnit TestCase JUnit 3.5.2 Observer Observer (Publish-Subscribe) Model/View Source/Listener JUnit, GUI Observer Observer Subject ConcreteSubject Observer ConcreteObserver 3.5.3 Observer TestListener // A Listener for test progress public interface TestListener { // An error occurred. public void adderror(test test, Throwable t); Junit 11/11

// A failure occurred. public void addfailure(test test, AssertionFailedError t); // A test started. public void starttest(test test); //A test ended. public void endtest(test test); JUnit TestListener TextUI,AWTUi,SwingUI TestListener TextUi ResultPrinter public class ResultPrinter implements TestListener { PrintStream fwriter; * A test ended. public PrintStream getwriter() { return fwriter; public void starttest(test test) { getwriter().print("."); public void adderror(test test, Throwable t) { getwriter().print("e"); public void addfailure(test test, AssertionFailedError t) { getwriter().print("f"); public void endtest(test test) { JUnit TestResult Collecting Parameter The Smalltalk Best Practice Patterns ConcreteSubject JUnit Subject ConcreteSubject public class TestResult extends Object { // Vector protected Vector flisteners = new Vector(); // Registers a TestListener public synchronized void addlistener(testlistener listener) { flisteners.addelement(listener); //Unregisters a TestListener public synchronized void removelistener(testlistener listener) { flisteners.removeelement(listener); //Informs the result that a test will be started. public void starttest(test test) { for (Enumeration e= clonelisteners().elements(); e.hasmoreelements(); ) { Junit 12/12

((TestListener)e.nextElement()).startTest(test); //Adds an error to the list of errors. The passed in exception //caused the error. public synchronized void adderror(test test, Throwable t) { for (Enumeration e= clonelisteners().elements(); e.hasmoreelements(); ) { ((TestListener)e.nextElement()).addError(test, t); // addfailure endtest TestRes ult flisteners : java.util.vector adderror() addfailure() addlistener() clonelisteners() endtest() removelistener() starttest() TestListener adderror() addfailure() endtest() starttest() ResultPrinter adderror() addfailure() endtest() getwriter() starttest() 3.5.4 Observer Subject Observer TestResult TestListener TestResult TestResult TestResult ResultPrinter 3.6 Decorate 3.6.1 TestCase Junit 13/13

TestCase Testcase TestCase TestCase Socket RepeatedTest TestCase RepeatedTest JUnit 3.6.2 Decorator Decorator (Wrapper) Decorator TestCase Decorator Decorator Component ConcreteComponent Decorator Component ConcreteDecorator 3.6.3 Decorator Test Component TestCase ConcreteComponent Decorator TestDecorator Test ftest run ftest run ConcreteComponent public class TestDecorator extends Assert implements Test { // protected Test ftest; public TestDecorator(Test test) { ftest= test; Junit 14/14

public void run(testresult result) { ftest.run(result); Decoretor RepeatedTest TestCase public class RepeatedTest extends TestDecorator { private int ftimesrepeat; public RepeatedTest(Test test, int repeat) { super(test); ftimesrepeat= repeat; // ConcreteComponent public void run(testresult result) { for (int i= 0; i < ftimesrepeat; i++) { if (result.shouldstop()) break; super.run(result); // TestCase Test TestDecorator RepeatedTest TestSetup TestCase public static Test suite() { TestSuite suite = new TestSuite(); suite.addtest(new TestSetup(new RepeatedTest(new Testmath("testAdd"),12))); return suite; TestCase RepeatedTest TestCase TestSetup Junit 15/15

3.6.4 Decorator TestCase RepeatedTest suite.addtest (new RepeatedTest(new Testmath("testAdd"),12)); TestCase Decorator TestCase suite.addtest(new TestSetup(new RepeatedTest(new Testmath("testAdd"),12))); 3.7 JUnit Junit 13 Junit 16/16