您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
JUnit使用经验(转自PMT杂志)
作者:网络转载 发布时间:[ 2013/1/17 13:59:06 ] 推荐标签:

经验四、在子类中调用父类的setUp() 和tearDown()

让我们看一看下面的代码
public class SomeTestCase extends AnotherTestCase {
// A connection to a database
private Database theDatabase;
public SomeTestCase (String testName) {
super (testName);
}
public void testFeatureX () {
...
}
public void setUp () {
// Clear out the database
theDatabase.clear ();
}
}

你发现其中的错误了吗?setUp()应该调用super.setUp() 以确保AnotherTestCase 中定义的环境被初始化了。当然这也有例外,是基类可以处理任意的测试数据。

经验五、不要硬性规定数据文件的路径

我们经常需要从文件系统中读取测试数据,看下面的代码:

public void setUp () {
FileInputStream inp ("C:\TestData\dataSet1.dat");
...
}

这段代码需要把测试数据文件dataSet1.dat 放在C:TestData,这是有问题的。

第一,C 盘可能没有磁盘空间了测试人员不得不把数据文件放到其他路径;

第二,可能需要在其他操作系统比如Linux 上执行这一测试。

所以,一个较好的替代方案是

public void setUp () {
FileInputStream inp ("dataSet1.dat");
...
}

但事实上这样仍不是很好,因为这要求数据文件的路径和测试执行的路径必须是同一个,如果几个不同的测试都这样的话,那要把这些测试集合起来执行有些困难,我们不得不频繁的改变当前路径。为了解决这个问题,我们可以使用Class.getResource()或者Class.getResourceAsStream(),这样我们可以把数据文件放在这个Class 的某个相对路径上。数据文件应该尽可能和源代码一起都放在配置管理系统上,但这样一来如果我们采用上面的Resource 机制,我们需要做一件工作,是把数据文件从原来的位置-是源代码的某个相对路径,拷贝到编译后的位置,也是class 文件的相应的相对路径。这其实并不复杂,因为从class 的package 可以映射到java文件的所在路径对于Linux或者Windows我们所要做的是把package中的. 用File.separatorChar 替代。

经验六、把测试的代码和被测的代码放在同样的目录下

当我们把测试代码和被测的代码放在同一目录下时,我们可以在编译被测代码的同时编译测试代码,从而确保两者是同步更新的。事实上当前的普遍做法,是把单元测试视为Build 的一个环节。

经验七、正确命名测试

把测试用例命名为TestClassUnderTest,比如如果被测的Class 是MessageLog,那么测试用例叫TestMessageLog,这样做使得测试用例和被测的Class一一对应,而在测试用例中每个测试的method 可以命名为

testLoggingEmptyMessage()
testLoggingNullMessage()
testLoggingWarningMessage()
testLoggingErrorMessage()

同样是为了说清楚测试的是什么。正确的命名可以帮助测试代码的阅读者了解每个测试的目的。

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd