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

junit学习之-在junit中增加suite

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

V.z&f`7P0     一直没有机会实践xUnit,这段时间稍微有些空,刚好页想在项目中实践一下junit,于是就google一把,照着一个例子写了一个test。断言(assert)还算简单,到增加testSuit的时候有些问题:
N$b5kWX#o0 首先是要引用Test和TestSuit类:51Testing软件测试网|6w[s+k#s
import junit.framework.TestCase;
0B:Sek)k0import junit.framework.Test;51Testing软件测试网+Jp7T(H8A3@
import junit.framework.TestSuite;51Testing软件测试网,T#\3zG"`

51Testing软件测试网w @Z,d-V

 然后增加一个静态类:51Testing软件测试网 ih? X"@%v'@m
 
9r8vK4IK8R(L0b:v\a!^0 public static Test suite() {},51Testing软件测试网\3ME)q)Q(]xa;L)r

51Testing软件测试网"z'Y6jZ1Y-a

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

"PZ#m/i7a&CLZ FK051Testing软件测试网 k"]d\b9p&Q7B

 public static Test suite() {51Testing软件测试网4@DWGe*Z,Vm1KC

51Testing软件测试网 L EKoI&A

  return suite;
kG.z$~\?y0 }51Testing软件测试网!gxvFv }-B Q+F _1X

51Testing软件测试网F CCT!V2H!n @)E

 然后增加一个suite:
.i"[-MVXX8t8m~(h0 public static Test suite() {51Testing软件测试网,hK1Eq(H7|Qmw+b
  TestSuite suite = new TestSuite();51Testing软件测试网4r/q D4jwy'p:W S
  return suite;51Testing软件测试网)i {W"f'k\be
 }51Testing软件测试网_/Jk;n`2oF

51Testing软件测试网G1v q#Pm)qc

 将测试增加进去:

w.psmV051Testing软件测试网6V un V8r

 public static Test suite() {51Testing软件测试网8Wi-Z-|2U!xEv%X
  TestSuite suite = new TestSuite();
%C'b+n|)\&]0  suite.addTest(new CalculatorTest() {51Testing软件测试网e5Q z7u+TV~vbg

9~Jej0i{0   }
dz`X1r0  });51Testing软件测试网-`CEtID `Z2@y!?
  return suite;
f {4v)q%gj{dc5{5b0 }

)X-L(Tu|Y)\d0

Cn4H*KW\7w,p0 最后将测试中的方法增加进去就可以了:51Testing软件测试网6Un8]0o_2b

51Testing软件测试网?[5x"Dn#_!|E

 public static Test suite() {
\iO ?DOf0  TestSuite suite = new TestSuite();51Testing软件测试网I7S{#QQAv
  suite.addTest(new CalculatorTest() {
e.b(D a(Hdw8v0Ns T0   protected void runTest() {
w&B+M&S^Sq{5cO0    testAdd();51Testing软件测试网hk9G9lw,C Rnb
   }
$w.K5yemV3l B0  });
&XDQ tD;v7S%v0  return suite;51Testing软件测试网1M/edPT
 }51Testing软件测试网~5Ur)pSW

51Testing软件测试网)x,bE?,} ^4CD


RpG8Sk} D0完整的代码:

8p:^~2L_U3a7HN051Testing软件测试网&i0P'On-aHl!t6L+R

package example;51Testing软件测试网V.GoS+pZ,XF7A

$r.v(G;e[-e0import junit.framework.TestCase;51Testing软件测试网G`8_2n J8u
import junit.framework.Test;
5Q+k)|Z%pq |.o0import junit.framework.TestSuite;51Testing软件测试网UjP6Gcz&E,W7Cb

51Testing软件测试网 B&Qc$GA

public class CalculatorTest1 extends TestCase {51Testing软件测试网 \$P4[ T Rh(K^!z
 private Calculator calculator;

Z c h8I[;uW/z051Testing软件测试网6GWH'E#H.\0z \ b

 public static Test suite() {
p BH(G3Y+z-l0  TestSuite suite = new TestSuite();
;o iT@f`,D!^mcm r0  suite.addTest(new CalculatorTest1() {51Testing软件测试网@b t7RD
   protected void runTest() {51Testing软件测试网1g-Z#n7c%b|)^ z
    testAdd();
B(H3k+FsE+P0   }51Testing软件测试网7@8i:z]xK B1w)XD
  });
(kC%b7s/ENN QqI0  return suite;51Testing软件测试网2r!Y3h#T Y0P
 }51Testing软件测试网 v,FF9t3V+G
 51Testing软件测试网/W+`UfD*g M`0`-?
 protected void setUp() throws Exception {51Testing软件测试网 ]VbG'z3o6gi
  calculator = new Calculator();51Testing软件测试网8b:os.D y'Gv:^
  calculator.clear();
] C8G2L*v0jKVp0 }51Testing软件测试网$N}x'vW_+X T4od
 51Testing软件测试网#D@ u @r3t-q
 protected void tearDown() throws Exception{51Testing软件测试网0p6?&P:\+M@ S
  calculator.clear();
1aRm `'r7U{:}'Z0 }
)x5Fh%Z'l9f Q0 
Yc7]h,SxND/V0 /*
_ Z'JFE@3K0d0  * Test method for 'example.Calculator.add(int)'51Testing软件测试网 SwkNhqSb.\
  */51Testing软件测试网Hs jX.j-pu#v(g
 public void testAdd() {
,yX}6L S"o2rf"F0  calculator.add(1);
oL"Mc!t/ubjk0  calculator.add(1);
S L,sp _8f0  assertEquals(calculator.getResult(),2);51Testing软件测试网/D%[9Bs7Nu9GYv
 }

#nX q$j%q%h0`L1Vi051Testing软件测试网 r;C%j@9L"J

 /*51Testing软件测试网s#k3^ E#W v,L%E
  * Test method for 'example.Calculator.substract(int)'51Testing软件测试网 `o ` k:X1|pDK
  */
L3K I~z;T0 public void testSubstract() {51Testing软件测试网_!o:h,Bu7p
  calculator.add(10);
)w lD-K;Qx0  calculator.substract(2);
2cgv8c6x d0  assertEquals(calculator.getResult(),8);
&T3G\m h0 }51Testing软件测试网WN|eA3AvJ

@p `Xy;t%t0 /*
vbZ.M.g-ni3YP!F0  * Test method for 'example.Calculator.multiply(int)'
8I"t4S Q~ckT)?1X7J0  */51Testing软件测试网K/]#?~@
 public void testMultiply() {51Testing软件测试网 ?g-S V0j-D,e
  calculator.add(10);
/xu*L)Ww;x p0  calculator.multiply(10);51Testing软件测试网-tfJoy1n"@
  assertEquals(calculator.getResult(),100);51Testing软件测试网+O*U)Q ln
 }

(RV }2O'Ct`2K G051Testing软件测试网_,J1~-s[lP+l${

 /*
z k^!s1Hs4X;QY0  * Test method for 'example.Calculator.divide(int)'51Testing软件测试网P7aW]4O
  */
!T|bP8J}M!].g6t]0 public void testDivide() {51Testing软件测试网Z'}9UX%d
  calculator.add(10);51Testing软件测试网SU1U T"J
  calculator.divide(10);
%Zd)nvg5j&`S0  assertEquals(calculator.getResult(),1);
"_qF CF k0 }

H6RGDd"Y)v(}| H051Testing软件测试网%qP4h~eX9H&gy.y

 /*51Testing软件测试网|g!rHB D$y
  * Test method for 'example.Calculator.square(int)'
Xw.S+~?0  */51Testing软件测试网$f8UsY5q:a6WV
 public void testSquare() {
#?a4P M1X Ca!^0  calculator.square(10);
o gUi%m$Sv3gv"Rg0  assertEquals(calculator.getResult(),100);51Testing软件测试网 I x6@,MB S t
 }

e`[)UR`*^.E3B:o~051Testing软件测试网"X4v Pb\:Wq

 /*
`E:J bywr!DQ@0  * Test method for 'example.Calculator.squareRoot(int)'51Testing软件测试网3q!\4J.mB&t'S fa
  */51Testing软件测试网\eE*w+U0]-s1qA.D
 public void testSquareRoot() {51Testing软件测试网 O ].pC'p!lKuq
  calculator.add(100);51Testing软件测试网Ay#JIa m"n
  calculator.squareRoot(2);
4p ^ B{vA7?A0P%^)l0  assertEquals(calculator.getResult(),10);51Testing软件测试网r.Y p U:p Y
 }51Testing软件测试网kE5bd#V7[+j[

51Testing软件测试网j _N!^!j/tFv

 /*51Testing软件测试网0BH1w'^/k,T&{
  * Test method for 'example.Calculator.clear()'
9{ q&@(]0X V[L0  */51Testing软件测试网,xy)E!zb)C9}d K
 public void testClear() {
Zc,pR _X0  assertEquals(calculator.getResult(),0);51Testing软件测试网l,J;ML4t8wU
 }51Testing软件测试网9kz#W['vD@O

51Testing软件测试网utT$q&fv\I

51Testing软件测试网)z(bt6L|w ^K
}51Testing软件测试网 S+_6{-o!i y~
 这样测试是通过了,但是不知道这样理解是否正确,是否是一个好的方法。有待各位大虾指正!

&A:?;} lz;?051Testing软件测试网Qu3I{7e3{|r8V

 

(o.p-SND6`C0

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-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar