This project is read-only.

Ausgabe auf der Konsole

Für die Ausgabe auf der Konsole gibt es folgende Extensions für die Klasse Object:
public static void Unit_ToConsole(this object pToConsoleObject)
public static void Unit_ToConsole(this object pToConsoleObject, string pChannelName)
public static void Unit_ToConsole(this object pToConsoleObject, System.Windows.DataTemplate ObjectTemplate)
public static void Unit_ToConsole(this object pToConsoleObject, string pChannelName, System.Windows.DataTemplate ObjectTemplate)
Da die Extension für die Klasse Object erstellt wurde, können die Erweiterungen mit jeder belibigen Klasse verwendet werden.
Fügen Sie Ihrem Project eine Referenz auf die DLL "SoftHai.Testing.dll" hinzu. Anschließend fügen Sie Ihrer Code-Datei die Using-Direktive hinzu.
using SoftHai.Testing;
Nun können Sie die Konsolenausgaben mit jeder Klasse wie folgt verwenden:
Object.Unit_ToConsole();

Konsolen Channel

Konsolenausgaben können mittels des "pChannelName" Parameters in verschiedenen Konsolen-Controls ausgegeben werden.
So kann es z.B. Eine Default-Konsole geben und eine Konsole für Detailausgaben.
Der Default Channel Name ist "DEFAULT". Die folgenden zwei Ausgaben werden also auf der selben Konsole ausgegeben.
Object.Unit_ToConsole();

Object.Unit_ToConsole("DEFAULT");

Benutzen der Ausgabe Funktionen

Die Konsolenausgaben können mit dem Control "ConsolOutputPresenter" angezeigt werden. Siehe hierzu:
Unit_ToConsole(this object pToConsoleObject)
Dies ist die Standart Ausgabe. Hier wird der Text der Funktion "ToString()" auf der Standart Konsole ausgegeben.
Diese Ausgabe eignet sich besonders gut für Basisklassen (z.B. Int, Double, DateTime, ...) und vorallen Strings.
z.B.:
"This Text printing on default console".Unit_ToConsole();
200.Unit_ToConsole();
DateTime.Now.Unit_ToConsole();
ergibt dies im ConsoleOutputPresenter:
ResultImage

Unit_ToConsole(this object pToConsoleObject, string pChannelName)
Diese Funktion funktioniert genauso wie die vorherige allerdings kann hier eine andere Konsole mittels des Channel Namens gewählt werden.

Unit_ToConsole(this object pToConsoleObject, System.Windows.DataTemplate ObjectTemplate)
Mit dieser Funktion wird das Object mittels des übergebenen "ObjectTemplates" auf der Standart Konsole ausgegeben. Dies bittet sich besonders für komplexere Datenobject an.
z.B.
XAML-DataTemplate:
<DataTemplate x:Name="DataTemplate">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBlock>First Name:</TextBlock>
        <TextBlock Grid.Row="1">Last Name:</TextBlock>
        <TextBlock Grid.Row="2">Birthday:</TextBlock>
        <TextBlock Grid.Column="1" Text="{Binding Path=FirstName}"/>
        <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=LastName}"/>
        <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Birthday}"/>
    </Grid>
</DataTemplate>
Das Komplexe Objekt das in der Console ausgegeben werden soll:
public class DemoObject
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime Birthday { get; set; }
}
Das Ausgeben auf der Konsole:
DemoObject ComplexObject = new DemoObject() { FirstName = "Max", LastName = "Demo", Birthday = new DateTime(1980, 10, 8) };
ComplexObject.Unit_ToConsole((DataTemplate)this.Resources["DataTemplate"]);
Sieht im ConsoleoutputPresenter so aus:
ResultImage

Um aus einem UI-Test Thread-Save das RecourcenObjekt auszulesen das zur Anzeige der Consolen-Ausgabe genutzt werden soll gibt es die folgende Funktion:
object Control_GetResourceObject(String pControlName, DependencyObject pParent, string pResourceName)
object Control_GetResourceObject(String pControlName, string pResourceName)
Der obrige Aufruf verändert sich dann wie folgt:
DemoObject ComplexObject = new DemoObject() { FirstName = "Max", LastName = "Demo", Birthday = new DateTime(1980, 10, 8) };
ComplexObject.Unit_ToConsole((DataTemplate)UITestEngine.CurrentInstance.Control_GetResourceObject("ControlName", "DataTemplate"));


Unit_ToConsole(this object pToConsoleObject, string pChannelName, System.Windows.DataTemplate ObjectTemplate)
Diese Funktion funktioniert wieder genauso wie die vorherige allerdings kann hier eine andere Konsole mittels des Channel Namens gewählt werden.

Seperatoren

Um die Ausgabe in optische Bereiche zu trennen, gibt es 2 verschiedene Seperatoren:
  • TextSeperator
  • GraphicSeperator
TextSeperator
Folgende Funktionen stehen für den Text Seperator zur Verfügung:
TextSeparatorToConsole()
TextSeparatorToConsole(string SperatorTitle)
TextSeparatorToConsole(string SperatorTitle, string pChannelName)
Anders als bei den bisherigen Funktionen, werden diese über die Klasse "ConsoleOutput" aufgerufen:
ConsoleOutput.TextSeparatorToConsole();
ConsoleOutput.TextSeparatorToConsole("I'am a text Seperator");
TextSeperatoren sehen wie folgt im ConsoleOutputPresenter aus:
ResultImage

GraphicSeperator
Folgende Funktionen stehen für den grafischen Seperator zur Verfügung:
GraphicSeparatorToConsole()
GraphicSeparatorToConsole(string SperatorTitle)
GraphicSeparatorToConsole(string SperatorTitle, string pChannelName)
Auch diese werden über die Klasse "ConsoleOutput" aufgerufen:
ConsoleOutput.GraphicSeparatorToConsole();
ConsoleOutput.GraphicSeparatorToConsole("I'am a graphic Seperator");
GraphicSeperatoren sehen wie folgt im ConsoleOutputPresenter aus:
ResultImage

CustomSeperator
Natürlich ist es auch möglich eigene Seperatoren zu erstellen:
z.B.
Das Template für den Seperator:
<DataTemplate x:Name="CustomSeperator">
    <Line StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeThickness="10"
                   X1="0" X2="400" Y1="0" Y2="0">
        <Line.Stroke>
            <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">
                <GradientStop Color="Red" Offset="0.0"/>
                <GradientStop Color="Yellow" Offset="1.0"/>
            </LinearGradientBrush>
        </Line.Stroke>
    </Line>
</DataTemplate>
Der Aufruf:
"".Unit_ToConsole((DataTemplate)this.Resources["CustomSeperator"]);
Und sieht wie folgt im ConsoleOutputPresenter aus:
ResultImage



This WikiPage was created with Codeplex WikiEditor

Last edited Jul 16, 2010 at 2:09 PM by SoftHai, version 6

Comments

No comments yet.