Frage

Ich frage mich, ob es eine Möglichkeit, zum Beispiel in dem DBUnit XML-Datensatz morgen als Datum angeben ist. Manchmal ist Codelogik unterschiedlich für Termine in Zukunft und Termine in der Vergangenheit und ich will beiden Fälle testen. Sicherlich kann ich so etwas wie der 5. November 2239 und sicher sein, festzulegen, dass Test bis zu diesem Zeitpunkt funktioniert, aber es gibt elegantere Art und Weise.

Ich habe noch nicht eine solche Situation während meiner Java-Entwicklung konfrontiert, aber sobald ich Erfahrung hatte, als Code Logik war anders für einen Tag vor dem Termin, zwei Tage vor Terminen, und mehr als zwei Tage vor dem Termin. In diesem Fall ist die einzige mögliche Lösung für Schreib Datenbank gefahrene Test relative Daten während des Datenimports einzufügen.

Gibt es Einrichtungen des DBUnit hierfür vorgesehen?

War es hilfreich?

Lösung

ich mit DBUnit gerade begonnen und war auf der Suche nach ähnlichen Fähigkeiten. Leider es scheint nicht zu Ausdruck Sprache für Termine im Rahmen zu sein. Allerdings habe ich eine geeignete Abhilfe ReplacementDataSet-Klasse DBUnit finden. Diese Klasse nimmt eine IDataSet Objekt und stellt Methoden Objekte durch die IDataSet Objekt aus den Datensatzdateien extrahiert zu ersetzen.

-Datensatz

<dataset>
    <user first_name="Dan"
          last_name="Smith"
          create_date="[create_date]"/>
<dataset>

Quellcode

String dataSetFile = "testDataFile.xml";
IDataSet dataSet = new FlatXmlDataSetBuilder().build(new FileInputStream(dataSetFile));
ReplacementDataSet rDataSet = new ReplacementDataSet(dataSet);
Set<String> keys = dataSetAdjustments.keySet();
rDataSet.addReplacementObject("[create_date]", DateUtils.addDays(new Date(), -2));

Wenn nun der Test der Erstellungsdaten des Benutzers ausgeführt werden immer auf zwei Tage eingestellt werden, bevor der Test durchgeführt wurde.

Hope, das hilft. Viel Glück.

Andere Tipps

Ich habe das mit etwas erreichen verwaltet wirklich ähnlich dem, was @loyalBrown tat, aber ich konnte nicht genau so tun, wie einige weitere Informationen dort fehlte, und ich wurde Instanziieren meine aktuelle Datenquelle mit @DatabaseSetup ( "/ pathToXML „)

So, das ist es, was ich getan habe:

Zuerst musste ich die Anmerkung entfernen, müssen Sie jetzt diese XML-Datei programmatisch mit dem folgenden Code starten:

@Inject
protected DataSource dataSource;

@Before
public void setUp() throws Exception {
        DataSourceDatabaseTester dataSourceDatabaseTester = new DataSourceDatabaseTester(dataSource);
        IDataSet dataSet = new FlatXmlDataSetBuilder().build(new FileInputStream(getClass().getResource(DATASET_FILE_LOCATION).getPath()));
        ReplacementDataSet rDataSet = new ReplacementDataSet(dataSet);
        rDataSet.addReplacementObject("{$today}", new Date());
        dataSourceDatabaseTester.setDataSet(rDataSet);
        dataSourceDatabaseTester.onSetup(); 
}

Dies schien den Trick zu tun

Sie können mit add () von Kalender zukünftigen Termine zu definieren und diese mit Datenquelle für JUnit in Beziehung verwendet wird. Ich bezweifle, dass dies mit DBUnit XML-Format funktionieren würde. Mai werden Sie Ihre eigenen Testcase erstellen, die von DBTestCase erstreckt und getDataSet () -Methode implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top