在Eclipse3.4当中写一个测试用例的时候,继承了TestCase,不知道是怎么脑袋一瞬间搭错线,在测试用例中,我自己写了这样一段代码:
public class AccountDAOTest extends SuperTestCaseForSpring {
private AccountDAO accDao;
public AccountDAOTest() {
}
public AccountDAOTest(String arg) {
}
……
而后运行其中的某个测试方法,结果总是在JUnit的调试界面当中,本应该显示所执行的方法名,但是却显示的是null
于是找原因找了老久,之前还以为是开发环境太新造成的问题,后来又清理了一下build path,最终问题锁定到带了一个参数的构造函数 AccountDAOTest(String arg) 上,将该方法删除即可,或者修改代码为:
public AccountDAOTest(String arg) {
super(arg)
}
其实翻阅JUnit 3的TestCase的源代码很容易发现 TestCase当中有一个构造函数,只带一个String类型的参数,而我这里写的代码,恰好覆写了这个构造方法,而后又没有像TestCase里面那样给字段fName赋值。
而我们执行测试的时候,最终会执行 TestCase 中的 runTest() 方法,于是乎在这个方法的第一行,断言fName不为空的代码就无法通过~~~~