⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buildfiletest.java

📁 ant源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  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. * */package org.apache.tools.ant;import junit.framework.TestCase;import java.io.File;import java.io.PrintStream;import java.net.URL;import java.util.Hashtable;/** * A BuildFileTest is a TestCase which executes targets from an Ant buildfile * for testing. * * This class provides a number of utility methods for particular build file * tests which extend this class. * */public abstract class BuildFileTest extends TestCase {    protected Project project;    private StringBuffer logBuffer;    private StringBuffer fullLogBuffer;    private StringBuffer outBuffer;    private StringBuffer errBuffer;    private BuildException buildException;    /**     * Default constructor for the BuildFileTest object.     */    public BuildFileTest() {        super();    }    /**     * Constructor for the BuildFileTest object.     *     * @param  name string to pass up to TestCase constructor     */    public BuildFileTest(String name) {        super(name);    }    /**     * Automatically calls the target called "tearDown"     * from the build file tested if it exits.     *     * This allows to use Ant tasks directly in the build file     * to clean up after each test. Note that no "setUp" target     * is automatically called, since it's trivial to have a     * test target depend on it.     */    protected void tearDown() throws Exception {        if (project == null) {            /*             * Maybe the BuildFileTest was subclassed and there is             * no initialized project. So we could avoid getting a             * NPE.             * If there is an initialized project getTargets() does             * not return null as it is initialized by an empty             * HashSet.             */            return;        }        final String tearDown = "tearDown";        if (project.getTargets().containsKey(tearDown)) {            project.executeTarget(tearDown);        }    }    /**     * run a target, expect for any build exception     *     * @param  target target to run     * @param  cause  information string to reader of report     */    public  void expectBuildException(String target, String cause) {        expectSpecificBuildException(target, cause, null);    }    /**     * Assert that only the given message has been logged with a     * priority &lt;= INFO when running the given target.     */    public void expectLog(String target, String log) {        executeTarget(target);        String realLog = getLog();        assertEquals(log, realLog);    }    /**     * Assert that the given substring is in the log messages.     */    public void assertLogContaining(String substring) {        String realLog = getLog();        assertTrue("expecting log to contain \"" + substring + "\" log was \""                   + realLog + "\"",                   realLog.indexOf(substring) >= 0);    }    /**     * Assert that the given substring is in the output messages.     * @since Ant1.7     */    public void assertOutputContaining(String substring) {        String realOutput = getOutput();        assertTrue("expecting output to contain \"" + substring                   + "\" output was \"" + realOutput + "\"",                   realOutput.indexOf(substring) >= 0);    }    /**     * Assert that the given message has been logged with a priority     * &lt;= INFO when running the given target.     */    public void expectLogContaining(String target, String log) {        executeTarget(target);        assertLogContaining(log);    }    /**     * Gets the log the BuildFileTest object.     * Only valid if configureProject() has been called.     *     * @pre logBuffer!=null     * @return    The log value     */    public  String getLog() {        return logBuffer.toString();    }    /**     * Assert that the given message has been logged with a priority     * &gt;= VERBOSE when running the given target.     */    public void expectDebuglog(String target, String log) {        executeTarget(target);        String realLog = getFullLog();        assertEquals(log, realLog);    }    /**     * Assert that the given substring is in the log messages.     */    public void assertDebuglogContaining(String substring) {        String realLog = getFullLog();        assertTrue("expecting debug log to contain \"" + substring                    + "\" log was \""                   + realLog + "\"",                   realLog.indexOf(substring) >= 0);    }    /**     * Gets the log the BuildFileTest object.     *     * Only valid if configureProject() has been called.     *     * @pre fullLogBuffer!=null     * @return    The log value     */    public String getFullLog() {        return fullLogBuffer.toString();    }    /**     * execute the target, verify output matches expectations     *     * @param  target  target to execute     * @param  output  output to look for     */    public void expectOutput(String target, String output) {        executeTarget(target);        String realOutput = getOutput();        assertEquals(output, realOutput.trim());    }    /**     * Executes the target, verify output matches expectations     * and that we got the named error at the end     *     * @param  target  target to execute     * @param  output  output to look for     * @param  error   Description of Parameter     */    public void expectOutputAndError(String target, String output, String error) {        executeTarget(target);        String realOutput = getOutput();        assertEquals(output, realOutput);        String realError = getError();        assertEquals(error, realError);    }    public String getOutput() {        return cleanBuffer(outBuffer);    }    public String getError() {        return cleanBuffer(errBuffer);    }    public BuildException getBuildException() {        return buildException;    }    private String cleanBuffer(StringBuffer buffer) {        StringBuffer cleanedBuffer = new StringBuffer();        boolean cr = false;        for (int i = 0; i < buffer.length(); i++) {            char ch = buffer.charAt(i);            if (ch == '\r') {                cr = true;                continue;            }            if (!cr) {                cleanedBuffer.append(ch);            } else {                cleanedBuffer.append(ch);            }        }        return cleanedBuffer.toString();    }    /**     * Sets up to run the named project     *     * @param  filename name of project file to run     */    public void configureProject(String filename) throws BuildException {        configureProject(filename, Project.MSG_DEBUG);    }    /**     * Sets up to run the named project     *     * @param  filename name of project file to run     */    public void configureProject(String filename, int logLevel)        throws BuildException {        logBuffer = new StringBuffer();        fullLogBuffer = new StringBuffer();        project = new Project();        project.init();        File antFile = new File(System.getProperty("root"), filename);        project.setUserProperty("ant.file" , antFile.getAbsolutePath());        project.addBuildListener(new AntTestListener(logLevel));        ProjectHelper.configureProject(project, antFile);    }    /**     * Executes a target we have set up     *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -