Ben ileride başvurmak için bu soru sormak ve yanıtlamak, çünkü DbUnit ile ortak bir sorun için iyi bir çözüm bulduğumu düşünüyorum. Umarım birileri, hatta bir yerlere yardım eder.DbUnit temiz-insert başarısız: yabancı anahtar kısıtlaması
DbUnit 2.5.0
ve TestNG 6.8.8
kullanıyorum. Benim kullanım durumum 3 öğeden oluşan bir veritabanının bir parçası içindir. Hem Administrable
hem de UserGroup
için bir yabancı anahtar tutan bir ServiceUser
vardır.
bu sonucu XMLDataSet
(atlanmış veriler) takip http://city81.blogspot.com/2011/03/testing-jpa-entities-using-dbunit.html
public abstract class AbstractDatabaseTest {
protected EntityManager em; // initialized elsewhere
private IDatabaseConnection connection;
private IDataSet dataset;
@BeforeClass
private void setupDatabaseResource() throws Exception {
// using Hibernate
connection = new DatabaseConnection(((SessionImpl) (em.getDelegate())).connection());
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqldbDataTypeFactory());
// full database export
IDataSet fullDataSet = connection.createDataSet();
final String datasetPath = String.format("%s%s", RESOURCE_FOLDER, "Testing.xml");
FlatXmlDataSet.write(fullDataSet, new FileOutputStream(datasetPath));
FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
flatXmlDataSetBuilder.setColumnSensing(true);
dataset = flatXmlDataSetBuilder.build(new FileInputStream(datasetPath));
}
@AfterMethod
public void cleanDB() throws Exception {
em.getTransaction().begin();
DatabaseOperation.CLEAN_INSERT.execute(connection, dataset);
em.getTransaction().commit();
}
}
kod, örneğin en takip etti:
<dataset>
<administrable/>
<serviceuser/>
<usergroup/>
</dataset>
TestNG
@AfterMethod
yürütüldüğünde, aşağıdaki elde Özel durum:
Kod snippet'ini nereye yerleştirdiniz? –
Ne sorduğundan emin değilim. Bir kod parçacığı hakkında hiçbir şey söylemiyorum ve ilgili tüm kod soru veya cevapta kullanılabilir. – blagae
Kullandığınız kod IDataSet snippet'i. Bunu hangi dosyaya koydun? –