此内容没有您所选择的语言版本。

35.3.3. Integration Testing with Mock Data


To insert or clean data in your database before each test, you can use Seam's integration with DBUnit. To do this, extend DBUnitSeamTest rather than SeamTest.
You must provide a dataset for DBUnit.
DBUnit supports two formats for dataset files, flat and XML. Seam's DBUnitSeamTest assumes that you use the flat format, so make sure that your dataset is in this format.
<dataset>
   
  <ARTIST 
    id="1"
    dtype="Band"
    name="Pink Floyd" />
      
  <DISC
    id="1"
    name="Dark Side of the Moon"
    artist_id="1" />
      
</dataset>
Copy to Clipboard Toggle word wrap
In your test class, configure your dataset by overriding prepareDBUnitOperations() as follows:
protected void prepareDBUnitOperations() {
  beforeTestOperations.add(
    new DataSetOperation("my/datasets/BaseData.xml")
  );
}
Copy to Clipboard Toggle word wrap
DataSetOperation defaults to DatabaseOperation.CLEAN_INSERT if no other operation is specified as a constructor argument. The previous example cleans all tables defined BaseData.xml, then inserts all rows declared in BaseData.xml before each @Test method is invoked.
If you require extra cleanup after a test method executes, add operations to the afterTestOperations list.
You need to tell DBUnit about your datasource by setting a TestNG test parameter named datasourceJndiName:
<parameter name="datasourceJndiName" value="java:/seamdiscsDatasource"/>
Copy to Clipboard Toggle word wrap
DBUnitSeamTest supports both MySQL and HSQL. You must tell it which database is being used, otherwise it defaults to HSQL:
 <parameter name="database" value="MYSQL" />
Copy to Clipboard Toggle word wrap
It also allows you to insert binary data into the test data set. (Note that this is untested on Windows.) Tell DBUnitSeamTest where to find these resources on your classpath:
<parameter name="binaryDir" value="images/" />
Copy to Clipboard Toggle word wrap
You do not have to configure any of these parameters if you use HSQL and have no binary imports. However, unless you specify datasourceJndiName in your test configuration, you will have to call setDatabaseJndiName() before your test runs. If you are not using HSQL or MySQL, you need to override some methods. See the Javadoc of DBUnitSeamTest for more details.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat