作者dream1124 (全新开始)
看板java
标题[问题] 撰写 junit Test Suite 的正确方法
时间Mon Dec 19 04:30:46 2011
各位有使用 junit 的板大们好
想请问到底写 junit 4 test suite 的正确方法是什麽呢?
过去我一直找不到 junit 有系统又好懂的教学文章,
因此写 test suite 的方法是网路上随便找程式码,自己乱试土法炼钢搞出来的.. QQ
因为我要写的 test suite 都是针对相同 test case 类别给不同参数做测试,
所以土法试出来的做法是在预计要测试的 test case 类别,
除了无参数建构式以外, 再额外写一个有参数的建构式,
然後 test suite 这样写 :
@RunWith(value=Parameterized.class)
public class MyTestSuite extends MyTestCase {
public MyTestSuite(String acct, String pw) {
super(acct, pw);
}
@Parameterized.Parameters
public static Collection<String[]> getParameters() {
/*在此设定不同 Test Case 要给入的参数*/
return collection;
}
}
这方法在我用 eclipse Helios 的时候,不管单独执行 Test Case 或是跑 Test suite
都能用,後来改用 eclipse Indigo 时,不晓得是我没弄清楚 junit 4 的规则,
或是 eclipse 的 junit 套件之使用规则
现在相同的做法会使得 Test case 无法单独呼叫 junit 测试,
一开始就直抛出错误 :
java.lang.IllegalArgumentException: Test class can only have one constructor
但是 Test suite 却又能跑,我想请问为什麽会这样呢?
一直到现在,旧有写好的 Test Case Test Suite 都能跑,
但如果将旧的 Test Case 里面 import org.junit.Test 移除,
再透过 eclipse 的提示功能自动载入 org.junit.Test,
就会出现跟上述情况一样问题.....
对了,附带一提 不晓得会这样的原因是不是我 Test case 的写法有错?
我的 test 通常都是这样写,因为喜欢这样的直观俐落︰
import junit.framework.Assert;
import org.junit.Test;
@Test
public void myTest() {
Assert.assertNotNull(xxxxx);
}
可是後来发现这样写好像是综合 junit 3 与 junit 4 函式库的写法,
不知道这样的写法是不是错误的原因呢?
谢谢大家指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.39.240
※ 编辑: dream1124 来自: 122.116.39.240 (12/19 04:37)