1 //$Id: DDTTestDataExceptionTest.java 276 2007-06-18 22:07:19Z jg_hamburg $ 2 /******************************************************************************** 3 * DDTUnit, a Datadriven Approach to Unit- and Moduletesting 4 * Copyright (c) 2004, Joerg and Kai Gellien 5 * All rights reserved. 6 * 7 * The Software is provided under the terms of the Common Public License 1.0 8 * as provided with the distribution of DDTUnit in the file cpl-v10.html. 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * + Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * + Redistributions in binary form must reproduce the above 17 * copyright notice, this list of conditions and the following 18 * disclaimer in the documentation and/or other materials provided 19 * with the distribution. 20 * 21 * + Neither the name of the authors or DDTUnit, nor the 22 * names of its contributors may be used to endorse or promote 23 * products derived from this software without specific prior 24 * written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 29 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 30 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 31 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 32 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 33 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 34 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 35 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 36 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 37 ********************************************************************************/ 38 package junitx.ddtunit.data; 39 40 import junit.framework.TestCase; 41 import junitx.ddtunit.util.ClassAnalyser; 42 import junitx.ddtunit.util.DDTConfiguration; 43 import junitx.framework.Assert; 44 45 /** 46 * Test exceptional behavior of DDTDataRepository. 47 * 48 * @author jg 49 */ 50 public class DDTTestDataExceptionTest extends TestCase { 51 52 private static final String LF = "\n"; 53 54 /** 55 * Checks if a DDTTestDataException is raised if no dataSet is found. 56 */ 57 public void testRetrievalOfEmptyClusterDataSet() { 58 String resource = "/resourceThatDoesNotExists.mypost"; 59 String clusterId = "myClusterIdThatDoesNotExists"; 60 try { 61 DDTDataRepository.getInstance().get(resource, clusterId); 62 fail("A DDTTestDataException should be thrown on empty lusterDataSet retrieval"); 63 } catch (DDTTestDataException ex) { 64 String expectedMessage = "Error on behalf of xml test resource." 65 + LF 66 + "Caused by:java.io.FileNotFoundException - /resourceThatDoesNotExists.mypost (No such file or directory)"; 67 assertEquals("Wrong message of caught exception", expectedMessage, 68 ex.getMessage()); 69 } 70 } 71 72 /** 73 * Check that a DDTTestDataException is raised if a parsing error occures.<br/> 74 * This test will allways be true on non-validating parsers.<br/> On use of 75 * validating parser this test throws an exception that actually will be 76 * caught by DDTUnit as defined in xml resource. 77 */ 78 public void testParsingErrorBehavior() { 79 String resource = ResourceNameFactory.getInstance().getName( 80 ClassAnalyser.classPackage(this), "DefectXMLTest"); 81 assertEquals("Wrong resource path", 82 "/junitx/ddtunit/data/DDT-DefectXMLTest.xml", resource); 83 String clusterId = "DbRepositoryAccessTest"; 84 try { 85 DDTDataRepository.getInstance().get(resource, clusterId); 86 DDTConfiguration config = DDTConfiguration.getInstance(); 87 if (config.isActiveParserValidation() 88 && config.isActiveXmlValidation()) { 89 fail("A DDTTestDataException should be thrown on empty ClusterDataSet retrieval"); 90 } 91 } catch (DDTTestDataException ex) { 92 String expectedMessage = "No testdata provided for class id 'DbRepositoryAccessTest' in testresource '/junitx/ddtunit/data/DDT-DefectXMLTest.xml'" 93 + LF 94 + "Check if referred class id in xml resources matches definition of " 95 + LF 96 + " initTestData(resource, classId) inside of your testclass."; 97 Assert.assertEquals("Wrong message of caught exception", 98 expectedMessage, ex.getMessage()); 99 } 100 } 101 }