把db scheme脚本移出resources目录

用DbUnit实现Dao层的单元测试中,我把数据库scheme脚本放在了/src/test/resources目录下,这样在初始化dataSource的时候,可以很方便地初始化数据库:

1
2
3
<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
  <jdbc:script location="classpath:scheme.sql"/>
</jdbc:initialize-database>

但是scheme.sql放在/src/test/resources下其实不太合理,数据库的scheme脚本应该是project级别的,不应该放在test下。而放在/src/main/resources下感觉也不太合理,/src/main/resources下放置的内容应该是在运行时会用到的各种配置文件。

在maven中使用profile和filtering管理多环境配置

Filtering

Filtering是maven的resource插件提供的功能,作用是用环境变量、pom文件里定义的属性和指定配置文件里的属性替换属性文件(*.properties)里的占位符(如${jdbc.url})

Profile

是pom文件里的一个xml元素,在profile里几乎可以定义所有在pom里的定义的内容(如depencency,build,properties等,但不能再定义profile)。当一个profile被激活时,它定义的等就会覆盖掉原pom里定义的相同内容,从而可以通过激活不同的profile来使用不同的配置。

用DbUnit实现Dao层的单元测试

前言

Dao层的单元测试,测试目的在于:

  • 验证数据连接环境(包括ORM的配置和Dao的实现)的正确性。
  • 验证sql语句的正确性。

单元测试的常规步骤是:

  1. 准备测试数据。
  2. 执行待测方法。
  3. 检查执行结果。

面向对象的多态

本文以自动化测试为例子解释面向对象中的多态概念。

从一个最简单的test case开始,打开一个网站,然后点击后退。这是一个国外的网站,所以要求同时兼容IE和Firefox。

首先,我们把测试脚本写出来。脚本很简单,描述每一个测试步骤。

1
2
3
4
5
6
7
8
9
void SimpleTestCase()
{
     Navigate();
     ValidateNavigate(); 

     Back();

     ValidateBack(); 
}