2016-04-20 2 views
1

Ich habe einen Test ausgeführt, um zu überprüfen, ob der XML-Code, der einen Endpunkt erreicht, mit dem in einer Datei enthaltenen XML identisch ist. Ich verwende assertMockEndpointsSatisfied() und habe überprüft, dass das XML mit einem anderen Tool identisch ist.Kameltest - assertMockEndpointsSatisfied mit Dateiinhalt

String sourceXml = readFile("src/test/resources/source1.xml"); 
String targetXml = readFile("src/test/resources/target1.xml"); 

// Mock WS endpoint should receive one message 
mockResult.expectedMessageCount(1); 
// Target endpoint should receive the target XML 
mockResult.expectedBodiesReceived(targetXml); 
// Start the process by sending in the Source XML 
start.sendBody(sourceXml); 
// Run all assertions 
assertMockEndpointsSatisfied(); 

und das Versagen (modifizierte Elemente und Namespaces) liest:

java.lang.AssertionError: mock://jmsamq:queue:SettlementOut Body of message: 0. Expected: <<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 
<api:req xmlns="testNS" xmlns:api="testAPI"> 
    <api:test> 
     <a>0600017121</a> 
     <b>01</b> 
     <c>1000.50</c> 
     <d>2000</d> 
    </api:test> 
</api:req> 
> but was: <<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 
<api:req xmlns="testNS" xmlns:api="testAPI"> 
    <api:test> 
     <a>0600017121</a> 
     <b>01</b> 
     <c>1000.50</c> 
     <d>2000</d> 
    </api:test> 
</api:req> 
> 

Ich habe XMLUnit angesehen, aber lieber nicht, dies zu tun haben. Wenn ich anstelle einer Datei anstelle einer Datei mit '\ n' anstelle einer neuen Zeile und 4 Leerzeichen eine Zeichenfolge vergleiche, funktioniert das problemlos.

+0

Wenn ich die Marshal-Eigenschaft filterNonXmlChars = "true" verwende, muss mein Test bestanden werden. Dort muss ein Zeichen versteckt sein, aber ich kann nicht herausfinden, was es ist. – kinsey

+0

Ich benutze nur XMLUnit für jetzt Es funktioniert gut, aber ich würde lieber einen Weg finden, die assertMockEndpointsSatisfied() - Prüfung zu verwenden. " – kinsey

Antwort

0

Die integrierte Funktionalität, die Sie verwenden, vergleicht das XML genau im Gegensatz zu seinem logischen Inhalt. Ich musste meinen eigenen Wrapper schreiben, der XMLUnit benutzte, den ich anbieten würde, aber mein vorheriger Arbeitgeber besitzt es jetzt. :(

+0

Ja, ich weiß nicht, warum es nicht erfolgreich vergleicht. Die Konsole zeigt 2 identische Zeichenfolgen und sagt, dass sie nicht sind das gleiche :) Ich habe es mit xmlunit laufen und werde dabei bleiben. – kinsey