/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package test;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Console Output Test Result</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see test.TestPackage#getConsoleOutputTestResult()
 * @model
 * @generated
 */
public interface ConsoleOutputTestResult extends OutputTestResult {

} // ConsoleOutputTestResult
