मैं भविष्य में संदर्भ के लिए इस प्रश्न का उत्तर और उत्तर दे रहा हूं, क्योंकि मुझे लगता है कि मुझे डीबीयूनीट के साथ एक आम समस्या का एक सभ्य समाधान मिला है। मुझे उम्मीद है कि यह लाइन के नीचे कहीं, किसी की मदद करता है।डीबीयूनीट क्लीन-डालने में विफल रहता है: विदेशी कुंजी बाधा
मैं DbUnit 2.5.0
और TestNG 6.8.8
का उपयोग कर रहा हूं। मेरा उपयोग केस डेटाबेस के एक हिस्से के लिए है जिसमें 3 इकाइयां शामिल हैं। ServiceUser
है जिसमें Administrable
और UserGroup
दोनों के लिए एक विदेशी कुंजी है।
मैं 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();
}
}
से कोड उदाहरण के सबसे ज्यादा अनुयायी इसी का परिणाम XMLDataSet
(छोड़े गए डेटा) पीछा कर रहा है:
<dataset>
<administrable/>
<serviceuser/>
<usergroup/>
</dataset>
जब TestNG
@AfterMethod
कार्यान्वित करता है, मैं निम्नलिखित मिल अपवाद:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
Cannot delete or update a parent row: a foreign key constraint fails (`testing_db`.`serviceuser`, CONSTRAINT `FK_gyylcfbhpl2ukqs5rm7sq0uy8` FOREIGN KEY (`userGroup_id`) REFERENCES `usergroup` (`id`))
आपने कोड स्निपेट कहां रखा? –
मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। मैं कोड स्निपेट के बारे में कुछ भी नहीं कहता, और सभी प्रासंगिक कोड प्रश्न या उत्तर में उपलब्ध हैं। – blagae
कोड आईडीटासेट स्निपेट जिसका आप उपयोग कर रहे थे। आपने उस फाइल में किस फाइल को रखा था? –