风动还是旗动?仁者心动。 文字只不过是指月的手指,而不是月亮本身,能透过指月的手指看到月亮本身才是文字的目的所在。

junit学习之-在junit中增加suite

上一篇 / 下一篇  2007-01-11 11:14:40 / 个人分类:Junit学习

x Ju5?(fJ-E0     一直没有机会实践xUnit,这段时间稍微有些空,刚好页想在项目中实践一下junit,于是就google一把,照着一个例子写了一个test。断言(assert)还算简单,到增加testSuit的时候有些问题:
b)z@P K0 首先是要引用Test和TestSuit类:
E ey/E5A0w D F1a h0import junit.framework.TestCase;
ds%R6jS(\;b0import junit.framework.Test;
)D"@S5f9I'ib0import junit.framework.TestSuite;51Testing软件测试网\-g*_*aPGIG#V/O

7s X,s"|P0 然后增加一个静态类:51Testing软件测试网"k{)_'sUL Qb yiU h3x
 
aL~!d'|$z8u0 public static Test suite() {},

0~ L5F5MS+sA#Xe?051Testing软件测试网8TE}R8R@"i

 该类必须增加一个返回值:

5u,EWh7O7A%b0

o|0` g)[{'UZ0 public static Test suite() {

4ENQ)b1JI1k0ZU#_051Testing软件测试网7if,| q^ ^U

  return suite;
g6Sa8V$^`L0 }51Testing软件测试网0p2[-Ed^ | ] F6l%u,{

51Testing软件测试网Hhf3U5H o-y4r;j

 然后增加一个suite:51Testing软件测试网(o*C/Wk @
 public static Test suite() {
?|`k E6T0  TestSuite suite = new TestSuite();
k'^/D]a G(Bx'Y7f0  return suite;51Testing软件测试网1]6[(xeMr
 }51Testing软件测试网@{+ZG!`]R&M

51Testing软件测试网$@zmD)Dr,yjz:~;w

 将测试增加进去:51Testing软件测试网4J0Me,i_ B

51Testing软件测试网G_!SM6pl-F

 public static Test suite() {51Testing软件测试网K1n7dF8_
  TestSuite suite = new TestSuite();51Testing软件测试网,HS2}N#b'q5H:m%B
  suite.addTest(new CalculatorTest() {

"w+hTJ_8rwa$]F$EO0

v oTl2Z_&l&m#I0   }
:zM5`#G0C6@.Z0  });
f[1c{~5F0  return suite;51Testing软件测试网c4g.F KF&{F4_
 }51Testing软件测试网#au8L7w pd

CM \:n*E0 最后将测试中的方法增加进去就可以了:

(H}!B B'k sez9E1eQ0

I I| Zf(b8|0 public static Test suite() {
"YDaG*rcO-kv.k0  TestSuite suite = new TestSuite();
9w"i,t;V9mK$T0  suite.addTest(new CalculatorTest() {
-D6n)C)h0{4|:p3R*v0   protected void runTest() {
[t,P+ac0    testAdd();
e3s(z4H!{g#E0   }51Testing软件测试网&N#U#S+naPQOU2f`}
  });51Testing软件测试网_M!Fi\i'vCv-Y
  return suite;
a sc&X gK8Vm0 }51Testing软件测试网1_8U*T4|.Su)MN1z%B

51Testing软件测试网,~Lp%D#e gH2f3vg

51Testing软件测试网}V1[%RjUDlU
完整的代码:51Testing软件测试网 ^$f9VM1G+W\ ?,q

51Testing软件测试网#k(Am.~y ? ElC

package example;51Testing软件测试网S go9u5iN_u

JB5xd#DV,H7O3{0import junit.framework.TestCase;
Pv"RLu$p0import junit.framework.Test;51Testing软件测试网'` j6rStUL
import junit.framework.TestSuite;51Testing软件测试网k'P+Bj0D o5e

51Testing软件测试网HW"`;?l;nh#n\

public class CalculatorTest1 extends TestCase {51Testing软件测试网m b%O@+e!t-O+C
 private Calculator calculator;51Testing软件测试网4s F(]*_?G'I

51Testing软件测试网w G ] N FO9P.[&]

 public static Test suite() {
l d O-F`9bFxbL}x0  TestSuite suite = new TestSuite();
Y,k3?8{.{ A0  suite.addTest(new CalculatorTest1() {
9BI!W L$Ls0   protected void runTest() {51Testing软件测试网*h p @7q&Vc} ^:u
    testAdd();51Testing软件测试网HjE Ny LM$V
   }
XU~&b/g P j0  });
7SH _d[_+\1E0  return suite;
c b/Y }?0q-n[,b%I?.b0 }
/Tq&d }"p_:e;f i)n0 
%z#UE9@[} {0 protected void setUp() throws Exception {51Testing软件测试网 fD%Z9i+u
  calculator = new Calculator();51Testing软件测试网MXZ^%v%S6D%m
  calculator.clear();
ARLB!?A:H0 }
eVMEk0I0 51Testing软件测试网3Eh~5CTp}Gb
 protected void tearDown() throws Exception{
b%{pVuj1IL'Jtq0  calculator.clear();
2d4b*NH$^r(VRQ0 }51Testing软件测试网X~5Ig'c N tJ
 51Testing软件测试网-W'J+wbtP-_#d
 /*
'RUl p]V6G$s1C0  * Test method for 'example.Calculator.add(int)'51Testing软件测试网y6I:e M p@
  */
X rn A$q0|0 public void testAdd() {
I!CESW#_0  calculator.add(1);51Testing软件测试网7IFv1j;M[4s.S
  calculator.add(1);
M g(D!MY\]8F0  assertEquals(calculator.getResult(),2);51Testing软件测试网o `6k'si.KU J
 }

{J?)v f m;JB0

6S{X(QZ0 /*51Testing软件测试网fndB|waE^ {Q6I
  * Test method for 'example.Calculator.substract(int)'
1Y.~8N0I[)u{Q8U0  */51Testing软件测试网2B#J ~9ROg:Rs+Y0^`#c
 public void testSubstract() {51Testing软件测试网-pO2sj ?p wT
  calculator.add(10);
/qk`5B9lU5W0  calculator.substract(2);51Testing软件测试网e3W3R\ mD?f3D
  assertEquals(calculator.getResult(),8);51Testing软件测试网9j:dlq`5p"_:Nk3}B
 }

"mX*R jH]x1Z$H051Testing软件测试网#O/t]a%en6g&@6XZ

 /*
)gE1Pz][0  * Test method for 'example.Calculator.multiply(int)'
,F8` Z2yM%u9P v0  */51Testing软件测试网 X Zb@-kwy
 public void testMultiply() {
GC,E4p`{|\gk0  calculator.add(10);51Testing软件测试网5f(L!Xo8o1J5L/ZYUN)e
  calculator.multiply(10);51Testing软件测试网$H3YY wuVq6\b!P
  assertEquals(calculator.getResult(),100);51Testing软件测试网]Y&\ cJE
 }51Testing软件测试网_%M4e{#A V)o+^T8?

o,s VgqQC"Y0 /*51Testing软件测试网;P qYR9tE.ng
  * Test method for 'example.Calculator.divide(int)'51Testing软件测试网YE)CsK5e
  */
9Ql7R@eqh0 public void testDivide() {51Testing软件测试网G^cxb4Z;M;I
  calculator.add(10);
/l7y/z:VM!jc;y&R0  calculator.divide(10);51Testing软件测试网7r3Pf%D]O4\| v
  assertEquals(calculator.getResult(),1);51Testing软件测试网L(| i%W.AH?m4en
 }51Testing软件测试网{ sy0O/I

51Testing软件测试网P$q:u/Y-Q7I;o

 /*51Testing软件测试网t l7{5{ ] ?
  * Test method for 'example.Calculator.square(int)'
;_s&U O8t9Z0  */51Testing软件测试网u1E'@8b t b8iRy
 public void testSquare() {51Testing软件测试网!ds'p%Yf6k^y/N
  calculator.square(10);
9mtB"k'q8r8OSXq0  assertEquals(calculator.getResult(),100);
rsU]A2[V0 }51Testing软件测试网o0})[lB0s f8I

'M ^t,zY$y0 /*51Testing软件测试网+K#~"ztz-g
  * Test method for 'example.Calculator.squareRoot(int)'51Testing软件测试网&{gI!LCf%FQ)t@
  */
j+T3ndaUF |.Q0 public void testSquareRoot() {
9x2N]6l3x+N7k0x {B$U^}0  calculator.add(100);
6]OU2z&WRG dX vG)[0  calculator.squareRoot(2);
'oXi#z3\t0T0  assertEquals(calculator.getResult(),10);
S'e zC'qn9j0 }51Testing软件测试网 r2y1z`!zCq%SD

51Testing软件测试网sjZP!~ h"Q D

 /*
v,L'~s(o1V&Y8M0  * Test method for 'example.Calculator.clear()'51Testing软件测试网p8Yy| am%`
  */51Testing软件测试网 @(Z F:T0j
 public void testClear() {
%^ W l-n T'\e i*B0  assertEquals(calculator.getResult(),0);51Testing软件测试网4c(s$b8yu7Q)j
 }

i }(B1D"FW)vQ~,b-lX051Testing软件测试网(}KZ Mb)A-aO`


O5J/Ne/K6O}c0}
xaVXv!Y?D0 这样测试是通过了,但是不知道这样理解是否正确,是否是一个好的方法。有待各位大虾指正!

'q t yV~&k:J&Z051Testing软件测试网#R$dZ Dd*Bd&nGd

 

`I a4?A wn%^*a0

TAG: Junit学习

BOBO 引用 删除 tanbofish   /   2007-06-01 16:21:26
高手~~~junit只看了,在项目里面实在是不怎么好用.
一文 引用 删除 fzxugang   /   2007-01-12 15:53:44
上面的例子有错误,不能写成public static Test suite1()这样的,方法名字一定要suite,应改成
public static Test suite()。
还有一个就是如果要这样增加测试用例:
suite1.addTest(new HelloTest("testAbs"));
那么HelloTest类中必须有一个带参数的构造方法:
        public HelloTest(String aa){
                super(aa);
        }
这样执行测试的时候就不会报错了。

完整的例子:
package example;

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTest {
        public static Test suite(){
                TestSuite suite = new TestSuite("Test Calculator");
                //suite.addTestSuite(CalculatorTest.class);
                suite.addTest(new CalculatorTest("testAdd"));
                suite.addTest(new CalculatorTest("testSubstract"));
                suite.addTest(new CalculatorTest("testMultiply"));
               
                suite.addTest(new HelloTest("testAbs"));
                return suite;
        }

       
//        public static Test suite() {
//        TestSuite suite = new TestSuite("testSuite");
//        suite.addTest(new CalculatorTest1()
//                        {
//                protected void runTest() {
//                        testAdd();
//                        testMultiply();
//                }
//               
//        });
//
//        return suite;
//}

       
}
一文 引用 删除 fzxugang   /   2007-01-12 08:35:25
另外写了一个AllTest类,可以把所有的测试用例都包含进去
package example;

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTest {
//        public static Test suite(){
//                TestSuite suite = new TestSuite("Test Calculator");
//                suite.addTestSuite(CalculatorTest.class);
//                //suite.addTest(new CalculatorTest("testAdd"));
//                return suite;
//        }

        public static Test suite1(){
                TestSuite suite1 = new TestSuite("Test Hello");
                suite1.addTest(new HelloTest("testAbs"));
                return suite1;
        }
//        public static Test suite() {
//        TestSuite suite = new TestSuite("testSuite");
//        suite.addTest(new CalculatorTest1()
//                        {
//                protected void runTest() {
//                        testAdd();
//                        testMultiply();
//                }
//               
//        });
//
//        return suite;
//}

       
}
一文 引用 删除 fzxugang   /   2007-01-11 17:29:23
还可以这样写
        public static Test suite(){
                TestSuite suite = new TestSuite("TestSuite");
                suite.addTestSuite(CalculatorTest1.class);
                return suite;
        }

这样把这个类中的所有测试用例都执行了。
 

评分:0

我来说两句

日历

« 2024-04-30  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 25519
  • 日志数: 36
  • 建立时间: 2006-12-19
  • 更新时间: 2007-07-09

RSS订阅

Open Toolbar