惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
V
Visual Studio Blog
C
Check Point Blog
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
博客园 - 聂微东
量子位
T
Tailwind CSS Blog
罗磊的独立博客
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
L
LangChain Blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Know Your Adversary
Know Your Adversary
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
有赞技术团队
有赞技术团队
V
Vulnerabilities – Threatpost
Martin Fowler
Martin Fowler
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
GbyAI
GbyAI
Latest news
Latest news
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
AWS News Blog
AWS News Blog
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
博客园 - Franky
S
Securelist
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
美团技术团队

博客园 - 摆渡人 外婆桥!

此BLOG不再继续了,请访问http://www.blogjava.net/swingboat 在Oracle中,快速获取一个部门以及它下面所有的子部门的方法。 cache模式的两种构成方式 OsWorkFlow学习(FSM:有限状态机) OsWorkFlow学习(概念) OsWorkFlow学习(数据库设置) 知识 企业如何确定是否需要BPM(出自:计世网) jsp页面,以excel的方式输出 - 摆渡人 外婆桥! - 博客园 在jboss4环境下,URL查询参数中支持中文 - 摆渡人 外婆桥! - 博客园 使用Junit时源代码和测试代码的组织(摘自Daping_Zhang 的 Blog ) 利用html中的div标签实现网页中某一块区域的自动滚动 struts及jstl使用问题集(一) 在struts框架下实现文件的上传 利用jspsmartupload上传文件,当我不选择文件就直接上传,会有什么结果呢?一个字“惨”啊! 软件工程中的经典案例! 利用edtftpj组件实现FTP文件的上传。 含有中文字符串的截取问题! 在struts1.1框架下,利用smartupload实现文件的上传(可以是多个文件)
junit的使用
摆渡人 外婆桥! · 2005-06-21 · via 博客园 - 摆渡人 外婆桥!

背景:当我们写完一个类的时候,需要对类的某些方法进行测试。我以前的做法是在类的main函数中,new一个类的实例,然后调用类的方法进行测试。当需要测试的方法越来越较多的时候,main函数也在逐渐的变大,最后连自己都糊涂了。这时候就需要junit了。
编码原则:
        从技术上强制你先考虑一个类的功能,也就是这个类提供给外部的接口,而不至于太早陷入它的细节。这是面向对象提倡的一种设计原则。
如果你要写一段代码:
1. 先用 junit 写测试,然后再写代码
2. 写完代码,运行测试,测试失败
3. 修改代码,运行测试,直到测试成功
编写步骤:如下图

测试代码:
package yhp.test.junit;

import junit.framework.*;
public class TestCar extends TestCase {
    protected int expectedWheels;
    protected Car myCar;
    public TestCar(String name) {
        super(name);
    }
    protected void setUp(){  //进行初始化任务
        expectedWheels = 4;
        myCar = new Car();
    }
    public static Test suite()    {//JUnit的TestRunner会调用suite方法来确定有多少个测试可以执行
        return new TestSuite(TestCar.class);
    }
    public void testGetWheels(){//以test开头,注意命名
        assertEquals(expectedWheels, myCar.getWheels());
    }
}

以下是通过eclipse自带的junit工具产生的代码:
package yhp.test.junit;
import junit.framework.TestCase;
public class TestCar2 extends TestCase {
    protected int expectedWheels;
    protected Car myCar;
    public static void main(String[] args) {
        junit.textui.TestRunner.run(TestCar2.class);//TestCar是个特殊suite的静态方法
    }
    protected void setUp() throws Exception {
        super.setUp();
        expectedWheels = 4;
        myCar = new Car();
    }
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public TestCar2(String arg0) {
        super(arg0);
    }
    public final void testGetWheels() {
        assertEquals(expectedWheels, myCar.getWheels());
    }
}

当有多个测试类的时候,系统能进行统一测试,这时可以利用TestSuite来实现。可以将TestSuite看作是包裹测试的一个容器。
通过eclipse自带的工具生成的代码如下:
package yhp.test.junit;
import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {
     public static Test suite() {
        TestSuite suite = new TestSuite("Test for yhp.test.junit");
        //$JUnit-BEGIN$
        suite.addTest(TestCar.suite());         //调用的方法,参数不一样,实际是一致的。
        suite.addTestSuite(TestCar2.class);  //
        //$JUnit-END$
        return suite;
    }
}