`
renjie120
  • 浏览: 237928 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22942
社区版块
存档分类
最新评论

ANT学习心得--与JUnit的集成

    博客分类:
  • ant
阅读更多

JU nit 基础

3.1 下载地址

https://github.com/KentBeck/junit/downloads

 

3.2 基础使用方法

    如果有这样一个工具栏,用来进行字符串的转换,将按照数据库命名的习惯进行格式化 , 格式化后的数据为小写字母,并且使用下划线分割命名单词

 

public class WordDealUtil {

    public static String wordFormat4DB(String name){

       if (name== null )

       {

           return null ;

       }

       Pattern p = Pattern.compile ( "[A-Z]" );

       Matcher m = p.matcher(name);

       StringBuffer sb = new StringBuffer();

       while (m.find()){

           if (m.start() != 0) {

              m.appendReplacement(sb, "_" + m.group());

           }

       }

       return m.appendTail(sb).toString().toLowerCase();

    }

}

然后定义一个测试类,对上面的方法进行测试,

注意:

1.        每一个测试的方法使用注解 org.junit.Test 修饰

2.        测试方法必须是 public void 修饰,且不可以带任何参数

3.        可以使用的测试判断方法在 Assert 里面有定义,主要是 assertEquals assertFalse assertTrue assertSame( 用来比较两个对象的引用是否相等 ),assertNotSame(),assertNull, assertNotNull(),fail()( 用来抛出 AssertEorror 错误,用这个方法抛出异常进行模拟方法异常的情况 )

4.        JUnitCore.main ( new String[]{ "mytool.WordDealUtilTest" }); 表示调用这个类里面的 Test 注解过的方法开始测试了。

5.        如果失败了,会有两种结果, failure error

 

public class WordDealUtilTest {

    @Test

    public void wordFormat4DBNormal(){

       String target = "employeeInfo" ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertEquals ( "employee_info" ,result);

    }

   

    @Test

    public void wordFormat4DBNull(){

       String target = null ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertNull (result);

    }

   

    @Test

    public void wordFormat4DBEmpty(){

       String target = "" ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertEquals ( "" ,result );

    }

   

    @Test

    public void wordFormat4DB1(){

       String target = "EmployeeInfo" ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertEquals ( "employee_info" ,result);

    }

   

    // 测试当尾字母为大写时的情况

    @Test

    public void wordFormat4DBEnd(){

       String target = "employeeInfoA" ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertEquals ( "employee_info_a" , result);

    }

   

    // 测试多个相连字母大写时的情况

    @Test

    public void wordFormat4DBTogether(){

       String target = "employeeAInfo" ;

       String result = WordDealUtil.wordFormat4DB (target);

       assertEquals ( "employee_a_info" , result);

    }

 

    //JUnit 将测试失败的情况分为两种: failure error

    //Failure 一般由单元测试使用的断言方法判断失败引起,它表示在测试点发现了问题;

    // error 则是由代码异常引起

    public static void main(String[] a){

         JUnitCore.main ( new String[]{ "mytool.WordDealUtilTest" });

    }

}

3.3 Fixture

   Fixture 是指在执行一个或者多个测试方法时需要的一系列公共资源或者数据,例如测试环境,测试数据等等。 JUnit 专门提供了设置公共 Fixture 的方法,同一测试类中的所有测试方法都可以共用它来初始化 Fixture 和注销 Fixture

   使用一些注解,就可以在一些方法或者类之前或者之后进行一些操作,有点像 AOP 的感觉。。。

见下面的例子:

 

public class Example {

    @BeforeClass

    public static void init() {

       System.out.println("before class:init() ...");

    }

 

    @AfterClass

    public static void release() {

       System.out.println("after class:release() ...");

    }

 

    @Before

    public void before() {

       System.out.println(" 在方法执行前执行: before()...");

    }

 

    @After

    public void close() {

       System.out.println(" 方法结束后第一个执行 ,close()..");

    }

 

    // 忽略测试

    @Ignore("Not retry yet")

    public void testIndexOut() {

       System.out.println(" 被忽略的方法被加入测试方法序列,但是没有执行? Exception test...");

    }

 

    // 如果超时 1 秒钟就认为出错 , 并且可以捕获除以 0 的运算异常

    @Test(timeout = 1000, expected = java.lang.ArithmeticException.class)

    public void testTimeout() {

       try {

           Thread.sleep(500);

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

       System.out.println("----------------- 过了 1 秒之后打印出来的! ");

       // 下面故意抛出一个运算异常 .

       System.out.println(1 / 0);

    }

 

    // 测试捕获指定异常的测试用例

    @Test(expected = java.lang.ArithmeticException.class)

    public void testEception() {

       System.out.println("----------------- 抛出异常之前 ");

       System.out.println(1 / 0);

       System.out.println(" 抛出异常之后 ");

    }

 

    public Example() {

       System.out.println("Example 构造函数 ...");

    }

 

    public static void main(String[] args) {

       JUnitCore.main(new String[] { "mytool.Example" });

    }

/**

JUnit version 4.9b2

before class:init() ...

Example 构造函数 ...

. 在方法执行前执行: before()...

----------------- 过了 1 秒之后打印出来的!

方法结束后第一个执行 ,close()..

Example 构造函数 ...

. 在方法执行前执行: before()...

----------------- 抛出异常之前

方法结束后第一个执行 ,close()..

after class:release() ...

 

Time: 0.516

 

OK (2 tests)

**/

}

注意:

       1. 上面还演示了两个很有用的 Test 的参数, timeout expected 。前者表示指定时间之后没有出结果,就默认为失败;后者表示期望可以抛出指定的异常,如果不是这个异常(或者没有抛出异常)就会失败!注意,没有异常也是测试失败!!

       2. 注意上面调用了两次构造函数 !

       3. 忽略测试的注解: Ignore

       4. 上面总共演示了这几种 Fixture 注解: Before,After, BeforeClass,AfterClass,  Ignore,Test.

 

3.4 测试运行器,测试套件

       JUnit 中所有的测试方法都是由它负责执行的。 JUnit 为单元测试提供了默认的测试运行器,但 JUnit 并没有限制必须使用默认的运行器。可以通过 RunWith 注解修改默认的测试运行器。

例如下面的,显示修改要在测试类上面使用的运行器:

 

 

@RunWith(CustomTestRunner.class)

public class TestWordDealUtil {

……

}

       随着项目进度的开展,单元测试类会越来越多,可是直到现在还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的。为了解决这个问题, JUnit 提供了一种批量运行测试类的方法 ,叫做测试套件

       建立一个测试套件的例子如下:

 

/**

  * 一个测试套件的例子。

  * 使用注解: RunWith :参数为 Suite

  *          SuiteClasses :参数为要放入测试套件的测试类组成的数组 , 可以有多个要测试的类!

  */

@RunWith(Suite.class)

@Suite.SuiteClasses({ WordDealUtilTest.class})

public class MyTestSuit {

       public static void main(String[] a){

              // 下面传入的参数是要调用的其他的测试的类,将会找那里的测试方法 .

              // 这里的 MyTestSuit 包含了其他的测试类 WordDealUtilTest ,要保证不要出现循环调用。 <span style="font-family:

分享到:
评论

相关推荐

    ant-junit-1.7.0.jar.zip

    《Ant与JUnit结合:ant-junit-1.7.0.jar.zip详解》 在软件开发过程中,测试是不可或缺的一环,而JUnit作为Java语言中最常用的单元测试框架,为开发者提供了便利。同样,Apache Ant作为一款强大的构建工具,帮助...

    ant-junit-1.6.5.jar

    ant-junit-1.6.5.jar ant-junit-1.6.5.jar

    ant-junit-1.6.5.jar.zip

    《Ant与JUnit结合:深入解析ant-junit-1.6.5.jar.zip》 在Java开发领域,Ant和JUnit是两个不可或缺的工具。Ant是一种基于Java的构建工具,用于自动化项目构建过程,如编译、打包、测试等任务。JUnit则是Java编程...

    ant-junit-1.6.1.jar.zip

    《Ant与JUnit结合:ant-junit-1.6.1.jar.zip详解》 在软件开发过程中,测试是不可或缺的一环,而JUnit作为Java语言中最常用的单元测试框架,为开发者提供了便利。同样,Apache Ant作为自动化构建工具,对于项目管理...

    ant-junit-1.8.3.jar

    标签:ant-junit-1.8.3.jar,ant,junit,1.8.3,jar包下载,依赖包

    ant-junit-1.8.1.jar

    标签:ant-junit-1.8.1.jar,ant,junit,1.8.1,jar包下载,依赖包

    ant-junit-1.7.1.jar

    标签:ant-junit-1.7.1.jar,ant,junit,1.7.1,jar包下载,依赖包

    最新版linux apache-ant-1.9.15-bin.tar.gz

    Apache Ant与操作系统的关系并不紧密,主要是因为它是用Java编写,所以理论上可以在任何支持Java的平台上运行,但某些特定功能或性能可能依赖于运行平台。 Ant广泛应用于Java项目,尤其是与Maven和Gradle等现代构建...

    ant-junit-1.8.4.jar

    标签:ant-junit-1.8.4.jar,ant,junit,1.8.4,jar包下载,依赖包

    ant-junit-1.6.3.jar.zip

    《Ant与JUnit结合:深入解析ant-junit-1.6.3.jar.zip》 在Java开发领域,构建管理和单元测试是两个至关重要的环节。Apache Ant和JUnit作为Java开发中的明星工具,分别扮演着构建自动化和单元测试的角色。本文将详细...

    ant-junit-1.6.jar.zip

    《Ant与JUnit集成:ant-junit-1.6.jar.zip详解》 在软件开发领域,自动化测试是确保代码质量和稳定性的重要环节。Java平台上的自动化测试工具中,JUnit无疑是最为广泛应用的一个,它提供了丰富的断言方法和测试框架...

    apache-ant-1.10.12-bin.tar.gz

    标签"apache ant"指出了这个文件与Apache Ant项目有关,Apache Ant是由Apache软件基金会维护的一个开源项目,它提供了许多预定义的任务,如处理文件、编译Java源代码、生成Javadoc、执行JUnit测试等,同时也允许用户...

    apache-ant-1.10.1-bin.zip 【windows版,32位和64位通用】

    在"apache-ant-1.10.1-bin.zip"这个压缩包中,我们找到了Apache Ant的1.10.1版本,这是一个适用于Windows操作系统的版本,同时兼容32位和64位系统。这意味着无论你使用的是哪种体系结构的Windows系统,都可以顺利地...

    ant-junit-1.6.4.jar.zip

    以上就是关于"ant-junit-1.6.4.jar.zip"的详细解读,它代表的是一个特定版本的Ant与JUnit的集成,为Java开发者提供了一种高效、灵活的自动化测试解决方案。了解这个压缩包的组成和用法,能够帮助开发者更好地管理和...

    ant-junit-1.6.2.jar.zip

    《Ant与JUnit集成:深入解析ant-junit-1.6.2.jar.zip》 在Java开发领域,Ant和JUnit是两个不可或缺的工具。Ant作为Apache软件基金会开发的构建工具,帮助开发者自动化构建、测试和部署Java项目。而JUnit则是Java...

    powermock-module-junit4-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-module-junit4-2.0.9.jar; 赠送原API文档:powermock-module-junit4-2.0.9-javadoc.jar; 赠送源代码:powermock-module-junit4-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-...

    ant-junit-1.8.0.jar

    标签:ant-junit-1.8.0.jar,ant,junit,1.8.0,jar包下载,依赖包

    ant-junit-1.9.2-sources.jar

    标签:ant-junit-1.9.2-sources.jar,ant,junit,1.9.2,sources,jar包下载,依赖包

    ant-junit-1.8.1.jar.zip

    标题中的"ant-junit-1.8.1.jar.zip"是一个压缩文件,它包含了与Apache Ant和JUnit相关的组件。这个文件特别的是版本号为1.8.1,这表明它是2009年发布的一个较旧但仍然广泛使用的版本。在IT领域,Ant和JUnit是两个...

    junit-jupiter-5.5.1.rar

    JUnit5相关的 JUnit Jupiter.jar依赖包,主要包含: junit-jupiter-5.5.1.jar,junit-jupiter-api-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-jupiter-api-5.4.2.jar,...

Global site tag (gtag.js) - Google Analytics