2016-07-27 14 views
2

コンテキストディスプレイvstest.console.exeツールに

を使用してSeleniumテストを実行しているとき、私はセレンC#のテストを実行ジェンキンスジョブを設定されたURLをテストしました。 仕事を構築するとき、私は2つの値を提供する必要があります。

  • ジェンキンスは、次の手順を実行し

  • 詳細な説明をテストする必要がありますURLを自分のソリューションを構築するために

    • 枝を:

      • は、ユーザー(「TestedURL」)が提供するURLとのAppSettingsに保存されているURLを置き換える選択し、チェックアウト
      • ビルドソリューション
      • のVisual Studio 2012に付属しているvstest.console.exeツール(、次のパスに存在するを実行します。 "マイクロソフトのVisual Studio 11.0 \ Common7 \ IDE \ CommonExtensions \マイクロソフト\ TestWindow」)を次のように

        vstest.console.exe "C:\ MyProjectと\ binに\デバッグ\ myProject.Test.dll"

      質問

      適切なURLがテストされていることを確認します.Jenkins/vstest.console.exe出力のコンソール出力にURLを表示したいとします。

      私は自分のコードをStackOverflowで異なる答えに従って修正しました。

      URLは、Visual Studioから直接テスト出力に表示されます。残念ながら、vstest.console.exe/Jenkins出力にはまだテストURLは表示されません。

      出力にURLを表示する方法(printMessageメソッドの変更方法)次のように

      私のコードは次のとおりです。

      using Microsoft.VisualStudio.TestTools.UnitTesting; 
      using OpenQA.Selenium; 
      using OpenQA.Selenium.Chrome; 
      using System; 
      using System.Configuration; 
      using System.Diagnostics; 
      
      namespace My.Test 
      { 
          [TestClass] 
          public class MyTests 
          { 
           IWebDriver driver; 
           string baseURL; 
      
           [TestInitialize] 
           public void Initialize() 
           { 
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
            // URL is replaced by the value provided in Jenkins 
            baseURL = config.AppSettings.Settings["TestedURL"].Value; 
            driver = new ChromeDriver(); 
            driver.Navigate().GoToUrl(baseURL); 
            printMessage(string.Format("Tested URL: '{0}'", baseURL)); 
           } 
      
           private TestContext testContextInstance; 
           /// <summary> 
           ///Gets or sets the test context which provides 
           ///information about and functionality for the current test run. 
           ///</summary> 
           public TestContext TestContext 
           { 
            get 
            { 
             return testContextInstance; 
            } 
            set 
            { 
             testContextInstance = value; 
            } 
           } 
      
           private void printMessage(string message) 
           { 
            // Method should display custom message in both Visual Studio output and Jenkins (vstest.console.exe) output 
            Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); 
            Trace.Listeners.Add(new ConsoleTraceListener()); 
            Trace.WriteLine(message); 
            Debug.WriteLine(message); 
            TestContext.WriteLine(message); 
            Console.WriteLine(message); 
           } 
          } 
      } 
      

    答えて

    0

    私は回避策を見つけた直接的な解決策を見つけることができませんので。

    vstest.console.exeには/logger:trx .trx拡張子のファイルを生成するオプションがあります。記述されたファイルは、Std出力とともにテスト結果を含むxmlです。テストメソッド内でprintmessageを使用すると、メッセージがそこにあることに気付きました(trxファイルのStd出力)。

    は私が生成された.trxファイルの一部を提供してみましょう:

    <Output> 
        <StdOut>Tested URL was 'http://someURL' 
    
    Debug Trace: 
    Tested URL: 'http://someURL' 
    Trying to log into as 'Incorrect account' 
    
    TestContext Messages: 
    Tested URL: 'http://someURL' 
    Trying to log into as 'Incorrect account'</StdOut> 
         </Output> 
        </UnitTestResult> 
    

    .trxの変換が.htmlのことを可能にするいくつかのツールがあります。 したがって、Jenkinsはテスト結果へのコンソール出力リンクで表示できます。


    しかし

    私は正常に動作して生成されたHTMLファイル内のSTD出力を示しツールを見つけることができないので、私は、問題を抱えています。 それ以来、私は以下のPowershellコードを書いた:

    # set $inputTRXFile, $outputHTMLFile before running following lines 
    $results = ([xml] (Get-Content $inputTRXFile)).TestRun.Results.UnitTestResult 
    $results | select testname,outcome,duration, @{Name="Output";Expression={$_.Output.InnerText}} | ConvertTo-HTML -head $a -title "Test results" | Out-File $outputHTMLFile 
    
    関連する問題