2009-07-23 4 views
7

Es gibt ein Befehlszeilentool, für das wir automatisierte Tests schreiben müssen. Unser Testframework wurde in C# geschrieben und ich suchte nach .NET-Bibliotheken, die mir die Automatisierung ermöglichen würden (ich weiß, dass ich die Process-Klasse verwenden kann; die IO umleiten; die Validierung durchführen, aber das Rad nicht neu erfinden wenn möglich). Im Idealfall suche ich nach etwas wie einer expect Bibliothek. Irgendwelche Vorschläge?Befehlszeilenautomatisierung - Entsprechung erwarten

Antwort

0

Ich realisiere, dass dies eine alte Frage ist, aber niemand hat geantwortet.

IMO, ich musste immer das Rad jedes Mal neu erfinden, wenn ich dies getan habe (d. H. Prozessklasse, Umleitung StdIO, StdErr, etc und parse die Ausgabe). Dachte, ich habe zu diesem Zweck eine abstrakte Basisklasse wiederverwendet.

Vielleicht jemand anderes weiß von einer Bibliothek, dies zu tun, aber ich nicht.

Allerdings werde ich eine Warnung geben, dass ich Fälle gesehen habe, in denen Umleitung der IO nicht immer richtig im .Net-Framework behandelt wird (abhängig davon, wie das Programm in stdio oder stderr schreibt, wenn Sie das Fenster ausblenden oder nicht , wenn du Multi-Threading verwendest, und einige andere Bedingungen), die zu einer Race-Bedingung führen, die zu einem unbestimmten Hang führt.

-2

http://blog.iwanek.eu/expect-net/

using ExpectNet; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 

namespace ExampleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       Console.WriteLine("ExampleApp"); 
       Session spawn = Expect.Spawn(new ProcessSpawnable("cmd.exe")); 
       spawn.Expect("c:", s => Console.WriteLine("got: " + s)); 
      } 
    } 
}