Java tutorial
package org.codehaus.mojo.macker; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Iterator; import java.util.List; import junit.framework.Assert; import org.custommonkey.xmlunit.DetailedDiff; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.Difference; import org.xml.sax.SAXException; /** * Uses XmlUnit to compare created Macker result XML reports against the expected ones. * @author <a href="http://www.code-cop.org/">Peter Kofler</a> */ public class XmlComparer extends Assert { private static final String DEFAULT_DATE = "Sun Apr 25 01:23:20 CEST 2010"; private final String controlFileFolder; public XmlComparer(String folder) { controlFileFolder = folder; } //private String readCleanedXml(File name) throws IOException //{ // return org.apache.commons.io.FileUtils.readFileToString( name ).replaceAll("<timestamp>.*?</timestamp>", "" ); //} // //private void compareXml( String controlName, File generatedFile ) throws IOException //{ // File controlFile = new File( controlFileFolder + controlName ); // String controlText = readCleanedXml( controlFile ); // String generatedText = readCleanedXml( generatedFile ); // assertEquals(controlText, generatedText ); //} public void compareXml(String controlFile, File generatedFile) throws SAXException, IOException { Diff xmlDiff = new Diff(new FileReader(controlFileFolder + controlFile), new FileReader(generatedFile)); DetailedDiff detailedDiff = new DetailedDiff(xmlDiff); List/*<Difference>*/ differences = detailedDiff.getAllDifferences(); if (differences.size() == 1) { Difference diff = (Difference) differences.get(0); // timestamp assertEquals(DEFAULT_DATE, diff.getControlNodeDetail().getValue()); } else { StringBuffer buf = new StringBuffer(); for (Iterator /*<Difference>*/i = differences.iterator(); i.hasNext();) { Difference diff = (Difference) i.next(); if (diff.toString().startsWith("Expected text value 'Sun Apr 25 01:23:20 CEST 2010' but was")) { continue; } buf.append(diff.toString()); buf.append("\n"); } fail("expected only one difference:\n" + buf.toString()); } assertEquals(detailedDiff.toString(), 1, differences.size()); } }