离弦之Ray

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

#

要做软工作业了,把以前的东西要翻出来了。

本来想马上配好myeclipse+jboss+mysql的,但不知道是什么原因老是说配置错误。网上也找到了类似的错误,但也没有很好的解答。

逼的我没办法,只好重装jdk,终于行了,但要睡觉咯……因为后面还有考试。
posted @ 2006-06-14 00:41 离弦之ray的技术天空 阅读(230) | 评论 (0)编辑 收藏

import junit.framework.*;
public class TestSimple extends TestCase{
   public TestSimple(String name){
          super(name);
     }
   public void testAdd(){
            assertEquals(2,1+1);
     }
}
这是最简单的JUnit框架,你可以在一个测试方法里面加多个断言,但只要一个断言出问题了,下面的断言就不执行咯。

但是调用其它测试类甚至一个测试系统该怎么办呢?
其实每个测试类都包含了一个
public static Test suite()方法,如果你没显式地实现它,系统会自动运行以test开头的方法

import junit.framework.*;
public class TestSimple extends TestCase{
   public TestSimple(String method){
          super(method);
     }
   public void testA(){
            ……
     }
   public void testB(){
            ……
     }
   public void testC(){
            ……
     }
   //如果你只想运行A和B 那么要这样写
   public static Test suite(){
        TestSuite suite = new TestSuite();
        suite.addTest(new TestSimple("testA"));
        suite.addTest(new TestSimple("testB"));
        return suilte;
    }
}

甚至有更高层的调用
suite.addTestSuite(TestClassOne.class);
suite.addTestSuite(TestClassTwo.suite());

仔细观察这两句的调用方法和参数哦,应该不用多说什么了吧……
posted @ 2006-06-12 18:48 离弦之ray的技术天空 阅读(359) | 评论 (0)编辑 收藏

这个博客有点像读书笔记了,这样也挺好的,看一遍书,再总结一下重要的内容。



大家多多捧场啊
posted @ 2006-06-12 00:51 离弦之ray的技术天空 阅读(181) | 评论 (1)编辑 收藏

        在上一篇中已经看到了assertEquals断言,还有其它断言吗?它们的原型又是怎样的呢?

        首先是assertEquals
        它的函数原型是assertEquals([String message],expected,actual)其中String message 是可选的。这样就比较清楚啦,expected 是期望的值,而actual是事实上运行后得到的值。如果这两个值吻合,那么这个测试就通过了,Eclipse里面会出现一个绿色的长条,看到它是心旷神怡啊。否则,长条就是红色的,就要去改程序啦。

         接下来介绍其它几个断言。
         assertNull([String message],java.lang.Object object ) 这是判断对象是否为空
         相对的
         还有一个:
         assertNotNull([String message],java.lang.Object object)这是判断对象是否不为空

         assertSame([String message],expected,actual)判断expected 和actual引用的是否为同一个对象

         assertTrue([String message],boolean condition)判断条件是否为true

         当然还有assertFalse啦

          另一个比较另类的函数是fail([String message])其中String message 是可选的。
          这个断言会让测试立即失败,主要用在某个不应该被到达的分支,比如在一个预期发生的异常之后。
posted @ 2006-06-12 00:50 离弦之ray的技术天空 阅读(472) | 评论 (0)编辑 收藏

     闲逛东大浦口图书馆,看到《单元测试之道——java版》,早已闻此书之大名,借来一阅。

      JUnit有多重要等等就不多说了,如果你想接触它,Come on,书上有个简单的例子。下面是一个被测试的例子:

public class Largest {
     public static int largest(int[] list)
    {
          int index, max = Integer.MAX_VALUE;
          for(index=0;index<list.length-1;index++){
          if(list[index]>max)max=list[index];
          }
         return max;
         }
}
这是一段有错误的程序,明眼人应该能看出来,以它来说明JUnit的用法。
我使用的Eclipse 3.1 ,JDK是1.4.2版本的。

在此工程里新建一个JUnit Test Case(JUnit在整个工程中所占的位置在后面有说暂时就随意了,可以放在被测程序同一个package内,也可以重新新建一个package)

刚生成的Test Case是如下这样的
package com.test.ray;

import junit.framework.TestCase;

public class TestLargest extends TestCase {
}
标记红色是因为这是一个test case 一定要继承的,而上面引用进来的junit.framework.TestCase包含了一个TestCase的具体框架。

跟普通的类一样,它需要一个构造函数。
public TestLargest(String name)
 {
  super(name);
 }
其中的name到底是什么,下一篇再讲。
接下来就可以写测试函数了,如果你想让自己写的测试函数自动被编译器运行的话,请务必以test作为方法名的开头。
public void testSimple()
 {
  assertEquals(9,Largest.largest(new int[]{7,8,9}));
  assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
 }

测试方法体一般是有断言组成的(关于断言的内容,以后再讲),第一个断言主要是测试边界的,可以看到9位于数组的最后,运行后可以在Eclipse里面看到一个红条,会有相关的错误信息。
junit.framework.AssertionFailedError: expected:<9> but was:<2147483647>
 从此你可以分析到,程序中循环语句判断条件应该是index<list.length,哈哈,一个错误找到了。

可是改过之后还是有错
仔细看看……
God,max的初始化!!!
可能很多人会想当然地把它改成max=0;
让我们看看接下来会发生什么。
junit.framework.AssertionFailedError: expected:<-7> but was:<0>
知道为什么了吗?如果数组里面有负数,得到的结果当然是0了。
应该是这样max=Integer.MIN_VALUE;
测试顺利通过!

其实这个程序还是有漏洞的,就是如果传入的数组是一个空数组的情况,可以这样改写
public class Largest {
 public static int largest(int[] list)
 {
  int index, max = Integer.MIN_VALUE;
  if(list.length==0){throw new RuntimeException("Empty list");}
  for(index=0;index<list.length;index++)
  {
   if(list[index]>max)max=list[index];
  }
  return max;
 }
}

对应的Test Case也改变一下
public class TestLargest extends TestCase {
 public TestLargest(String name)
 {
  super(name);
 }
 public void testSimple()
 {
  assertEquals(9,Largest.largest(new int[]{7,8,9}));
  assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
 }
 public void testEmpty()
 {
  try{
   Largest.largest(new int[]{});
   fail("lallal");
   }catch(RuntimeException e){System.out.println("cuo la!");}
 }
}
增加了一个测试数组为空的测试方法,从Test Case下面的Console中可以知道Test Case 已经捕获了这个异常。

好了,今天就写到这里,下次有更精彩的内容哦。

 

posted @ 2006-06-11 00:26 离弦之ray的技术天空 阅读(355) | 评论 (0)编辑 收藏

仅列出标题
共11页: First 上一页 3 4 5 6 7 8 9 10 11 下一页