كيف يمكنني الحصول على dbunit للعب لطيفة مع أنواع بيانات التعداد الخلية؟

StackOverflow https://stackoverflow.com/questions/706371

  •  22-08-2019
  •  | 
  •  

سؤال

وأنا أحاول أن استخدام dbunit لاختبار بعض لدينا رمز وصول قاعدة البيانات وأنا على التوالي في مشكلة. نحن نستخدم الخلية 5 شيء أو غيرها مثل قاعدة البيانات نفسها. صدرت لي مجموعة صغيرة من البيانات إلى FlatXmlDataSet وعندما الإعداد حالة اختبار، فإنه يلقي استثناء التي تقول "اقتطاع بيانات العمود 'FHEIGHT_FLAG' في الصف 1". يتم تعريف FHEIGHT_FLAG العمود ك

enum('t','f') default NULL

والطريقة التي يتم إدخال البيانات التعداد للل قاعدة البيانات، إذا كانت قيمة حقيقية للمصدر البيانات غير صحيح، ثم العمود يحتوي في الواقع "" (سلسلة فارغة). الشفرة باستخدام قاعدة البيانات هو مجرد جعل افتراض أنه إذا كانت القيمة المقدمة من قاعدة البيانات ليست 'ر'، ثم يجب أن تكون كاذبة. كيف يمكنني جعل هذه تذهب؟ لا أستطيع تحديد مصدر البيانات، لذلك يجب أن تحاول أن تفعل شيئا مع حالة اختبار.

هل كانت مفيدة؟

المحلول

وتصدير مجموعة بيانات جديدة، وذلك باستخدام "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(ولكن تأمر الأعمدة كما هي في الجدول الحقيقي، بالطبع).

final String select = "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";
// database connection
Class driverClass = Class.forName("package.of.jdbcDriver");
Connection jdbcConnection = DriverManager.getConnection(
        "jdbc:url:of:db", "user", "pass");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("Tablename", select);

FlatXmlDataSet.write(partialDataSet, new FileOutputStream("mydataset.xml"));

نصائح أخرى

وانتهى بي الأمر تعديل العمود اختبار قاعدة بيانات FHEIGHT_FLAG أن يكون

enum('','t','f') default NULL

وبهذه الطريقة تم السماح كافة القيم سلسلة فارغة لإدراجها الظهر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top