- 注解
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
@Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
@Test:测试方法,在这里可以测试期望异常和超时时间
@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为: @Before -> @Test -> @After;
- DBJUNIT的用法
dbunit是一个基于junit扩展的数据库测试框架。
- DBJUNIT的用法
// Excel读取预想值を取得する
IDataSet expectedDataSet = new XlsDataSet(
new File(FILE_DIR + "/GenInfoMkUpd_exp04.xls"));
ITable expectedTable = expectedDataSet.getTable("TFHHB41_SMGOCHGGENINFO");
// 実際値を取得する
IDataSet databaseDataSet = _con.createDataSet();
ITable actualTable = databaseDataSet.getTable("TFHHB41_SMGOCHGGENINFO");
exp("TFHHB41_SMGOCHGGENINFO");
// 件数比較
assertEquals(expectedTable.getRowCount(), actualTable.getRowCount());
// 各項目比較
Assertion.assertEquals(expectedTable, actualTable);
// 将数据读取到Excel中
public boolean exp(String tableName){
QueryDataSet dataSet = new QueryDataSet(_con);
try{
File destFolder = new File("D:\\");
dataSet.addTable(tableName);
CsvDataSetWriter.write(dataSet, destFolder);
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
3.Mockito AND PowerMock
PowerMock 简介
使用 PowerMock 以及 Mockito 实现单元测试
使用扩展于 Mockito 的 PowerMock 来实现对于前者不支持的模拟形式的单元测试。
http://blog.csdn.net/dc_726/article/details/8568537
http://liuzhijun.iteye.com/blog/1512780
http://cache.baiducontent.com/c?m=9d78d513d9811cea0fad837f7d498a374043811367918d013894cd47c9221d03506790a63a675541c4c50b3c51f05e5c9da16b2d2a5577f3cc96d5088afbd7756fd1662921409b1941974ab2935125b77ecd4de9d95bbaffa772ccf3838ac2&p=882a9645dcd201fc57efd03456008a&newp=882a9645dc8712a05aa4880c617a8a231610db2151d4d71f3b&user=baidu&fm=sc&query=powermockito&qid=b929c4f000004528&p1=3
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({ "javax.management.*" })
@PrepareForTest({ Transaction.class })
public class GenInfoMkUpdSubCommandTest {
private Transaction _tran;
private static final String FILE_DIR = GenInfoMkUpdSubCommandTest.class.getResource("").getPath();
private DatabaseConnection _con;
@Before
public void setUp() throws Exception {
_tran = Transaction.getTransaction();
_tran.begin();
Transaction mockTran = Mockito.mock(Transaction.class);
Mockito.doNothing().when(mockTran).begin();
Mockito.doNothing().when(mockTran).commit();
PowerMockito.spy(Transaction.class);
Mockito.when(Transaction.getTransaction()).thenReturn(mockTran);
// DBデータ作成
FHDAO dao = new FHDAO();
Connection connection = dao.getConnection();
_con = new DatabaseConnection(connection,
JUnitConst.SCHEMA);
}
}