Junit的学习笔记一

来源:互联网 发布:中国历史上的真相知乎 编辑:程序博客网 时间:2024/06/04 18:45
<script type="text/javascript"><!--google_ad_client = "pub-1926348199765453";/* 728x90, 创建于 08-12-3 */google_ad_slot = "0385006797";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 
Junit的学习笔记
J
1.      Junit中几个不得不掌握的方法
a)        assertNull
b)        assertNotNull
c)        assertEquals
d)        assertNotEquals
e)        assertTrue
f)         assertFalse
g)        assertSame
h)        assertNotSame
i)          fail
 
2.      使用方法
a)        类名规则: 类名+Test 比如你有一个需要测试的类是HelloMyPlog 则你的测试类就叫做HelloMyPlogTest
b)        方法规则:test+方法名字 testShowPlogInfo()
c)        必须继承TestCase类
d)        setUp与tearDown,这两个函数是Junit中提供初始化和反初始化每个测试方法的。setUp在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown在每个测试方法被调用之后被调用,负责撤销测试环境。
 
区分failexception
-          fail,期望出现的错误。产生原因:assert函数出错(如assertFalse(true));fail函数产生(如fail(……))。
-          exception,不期望出现的错误,属于unit test程序运行时抛出的异常。它和普通代码运行过程中抛出的runtime异常属于一种类型。
对于assert
 
关于TestSuit
您怎样才能一次运行多个测试?
只要您有了两个测试,您可能就希望一起运行他们。您当然可以每次只运行一个,但是很快您就会感到厌倦。JUnit提供了一个对象,TestSuite,以方便您一次完成任意多的测试一起运行。

例如:只运行一个测试用例,您可能会执行:

TestResult result = (new MoneyTest("testMoneyMoneyBag")).run();

运行两个测试用例,可以先产生一个套件(Suite),然后将这两个测试用例包含其中,如下:

TestSuite suite = new TestSuite();

suite.addTest(
new MoneyTest("testMoneyMoneyBag"));
suite.addTest(
new MoneyTest("testSimpleAdd"));
TestResult result 
= suite.run();

      组装TestSuite,运行更多的test。在Junit中,TestTestCaseTestSuite三者组成了composiste pattern。通过组装自己的TestSuite,可以完成对添加到这个TestSuite中的所有的TestCase的调用。而且这些定义的TestSuite还可以组装成更大的TestSuite,这样同时也方便了对于不断增加的TestCase的管理和维护。

       它的另一个好处就是,可以从这个TestCase树的任意一个节点(TestSuiteTestCase)开始调用,来完成这个节点以下的所有TestCase的调用。提高了unit test的灵活性。
使用例子(其实跟上面是一样的)
import junit.framework.Test; 
import junit.framework.TestSuite; 
public class TestAll
public class TestAll
    
//定义一个suite,对于junit的作用可以视为类似于java应用程序的main。
    public static Test suite()
        TestSuite suite 
= new TestSuite("Running all tests."); 
        suite.addTestSuite( TestCase1.
class); 
        suite.addTestSuite( TestCase2.
class); 
        
return suite; 
    }
 
}
 
 
使用Ant junit task。我们除了使用java来直接运行junit之外,我们还可以使用junit提供的junit task与ant结合来运行。涉及的几个主要的ant task如下:
-          <junit>,定义一个junit task
-          <batchtest>,位于<junit>中,运行多个TestCase
-          <test>,位于<junit>中,运行单个TestCase
-          <formatter>,位于<junit>中,定义一个测试结果输出格式
-          <junitreport>,定义一个junitreport task
-          <report>,位于<junitreport>中,输出一个junit report
具体的语法请参见相关文档。
10.   使用例子:
<junit printsummary="yes" haltonfailure="no"> 
    
<classpath> 
        
<path refid="classpath"/> 
        
<pathelement location="${dist.junit}"/> 
    
</classpath> 
    
<formatter type="brief" usefile="false"/> 
    
<formatter type="xml"/> 
    
<batchtest todir="${doc.junitReport}"> 
        
<fileset dir="${dist.junit}" includes="**/*Test.class" /> 
    
</batchtest> 
</junit> 
<junitreport todir="${doc.junitReport}"> 
    
<fileset dir="${doc.junitReport}"> 
        
<include name="TEST*-*.xml"/> 
    
</fileset> 
    
<report format="frames" styledir="${junit.styleDir}" todir="${doc.junitReport}"/> 
</junitreport> 
检查表
       junit的使用并不很难,然而要书写一个好的TestCase却并非易事。一个不好的TestCase往往是既浪费了时间,也起不了实际的作用。相反,一个好的TestCase,不仅可以很好的指出代码中存在的问题,而且也可以作为代码更准确的文档,同时还在持续集成的过程中起非常重要的作用。在此给出书写TestCase时需要注意的几点:
-          测试的独立性:一次只测试一个对象,方便定位出错的位置。这有2层意思:一个TestCase,只测试一个对象;一个TestMethod,只测试这个对象中的一个方法。
-          给测试方法一个合适的名字。
-          在assert函数中给出失败的原因,如:assertTrue( “… should be true”, ……),方便查错。在这个例子中,如果无法通过assertTrue,那么给出的消息将被显示。在junit中每个assert函数都有第一个参数是出错时显示消息的函数原型。
-          测试所有可能引起失败的地方,如:一个类中频繁改动的函数。对于那些仅仅只含有getter/setter的类,如果是由IDE(如Eclipse)产生的,则可不测;如果是人工写,那么最好测试一下。
-          在setUp和tearDown中的代码不应该是与测试方法相关的,而应该是全局相关的。如针对与测试方法A和B,在setUp和tearDown中的代码应该是A和B都需要的代码。
-          测试代码的组织:相同的包,不同的目录。这样,测试代码可以访问被测试类的protected变量/方法,方便测试代码的编写。放在不同的目录,则方便了测试代码的管理以及代码的打包和发布。一个例子如下:
src   <=源代码根目录
 |---com 
     |---mod1 
         |---class1 
junit   
<=测试代码根目录 
 |---com 
     
|---mod1 
         |---class1 
 
下面是Junit常用方法参数的一些说明。
Method Summary
static void
assertArrayEquals(byte[] expecteds, byte[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(char[] expecteds, char[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(int[] expecteds, int[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(long[] expecteds, long[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.Object[] expecteds, java.lang.Object[] actuals)
          Asserts that two object arrays are equal.
static void
assertArrayEquals(short[] expecteds, short[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, byte[] expecteds, byte[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, char[] expecteds, char[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, int[] expecteds, int[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, long[] expecteds, long[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals)
          Asserts that two object arrays are equal.
static void
assertArrayEquals(java.lang.String message, short[] expecteds, short[] actuals)
          TODO: fix javadoc Asserts that two object arrays are equal.
static void
assertEquals(double expected, double actual, double delta)
          Asserts that two doubles or floats are equal to within a positive delta.
static void
assertEquals(java.lang.Object[] expecteds, java.lang.Object[] actuals)
          Deprecated. use assertArrayEquals
static void
assertEquals(java.lang.Object expected, java.lang.Object actual)
          Asserts that two objects are equal.
static void
assertEquals(java.lang.String message, double expected, double actual, double delta)
          Asserts that two doubles or floats are equal to within a positive delta.
static void
assertEquals(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals)
          Deprecated. use assertArrayEquals
static void
assertEquals(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
          Asserts that two objects are equal.
static void
assertFalse(boolean condition)
          Asserts that a condition is false.
static void
assertFalse(java.lang.String message, boolean condition)
          Asserts that a condition is false.
static void
assertNotNull(java.lang.Object object)
          Asserts that an object isn't null.
static void
assertNotNull(java.lang.String message, java.lang.Object object)
          Asserts that an object isn't null.
static void
assertNotSame(java.lang.Object unexpected, java.lang.Object actual)
          Asserts that two objects do not refer to the same object.
static void
assertNotSame(java.lang.String message, java.lang.Object unexpected, java.lang.Object actual)
          Asserts that two objects do not refer to the same object.
static void
assertNull(java.lang.Object object)
          Asserts that an object is null.
static void
assertNull(java.lang.String message, java.lang.Object object)
          Asserts that an object is null.
static void
assertSame(java.lang.Object expected, java.lang.Object actual)
          Asserts that two objects refer to the same object.
static void
assertSame(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
          Asserts that two objects refer to the same object.
static void
assertTrue(boolean condition)
          Asserts that a condition is true.
static void
assertTrue(java.lang.String message, boolean condition)
          Asserts that a condition is true.
static void
fail()
          Fails a test with no message.
static void
fail(java.lang.String message)
          Fails a test with the given message.
 
<script type="text/javascript"><!--google_ad_client = "pub-1926348199765453";/* 336x280, 创建于 08-12-3 */google_ad_slot = "6860128133";google_ad_width = 336;google_ad_height = 280;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击