2011-10-17 57 views
0

我寫了一個演示代碼來測試WatiN的屏保功能。WatiN 2.0 Beta:屏保仍然無效

但是,當我寫了下面的一段代碼故意失敗,並保存截圖,它只是停止在測試失敗

using System; 
using WatiN.Core; 
using Gallio.Framework; 
using MbUnit.Framework; 
using Gallio.Model; 


namespace Screenshotwhentestfails 
{ 
    [TestFixture] 
    class Program 
    { 

     public IE ie = new IE(); 
     [STAThread] 
     [Test] 
     static void Main(string[] args) 
     { 
      DemoCaptureOnFailure(); 
      DisposeBrowser(); 
     } 
     [Test] 
     [TearDown] 
     public static void DemoCaptureOnFailure() 
     { 
      IE ie = new IE(); 
      using (TestLog.BeginSection("Go to Google, enter MbUnit as a search term and click I'm Feeling Lucky")) 
      { 
       ie.GoTo("http://www.google.com"); 

       ie.TextField(Find.ByName("q")).TypeText("MbUnit"); 
       ie.Button(Find.ByName("btnI")).Click(); 
      } 

      // Of course this is ridiculous, we'll be on the MbUnit homepage... 
      Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page."); 
     } 
     [TearDown] 
     public static void DisposeBrowser() 
     { 
      IE ie = new IE(); 
      if (TestContext.CurrentContext.Outcome == TestOutcome.Failed) 
      { 
       ie.CaptureWebPageToFile("C:\\Documents and Settings\\All Users\\Favorites.png"); 
      } 

     } 
     } 
    } 

它是在

拋出異常Assert.True即在執行
   Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page."); 

這一步是故意的,但屏幕截圖在指定位置的保存不成立。

感謝您的任何幫助:)

回答

1

我以爲你在哪裏使用NUnit?無論如何,這是你需要做的。

你不是很正確地設置你的測試。

在您的應用程序中,轉至File-> New-> Project ...並添加一個「MbUnit V3測試項目」(C#版本)。在解決方案資源管理器中添加對WatiN DLL的引用。

首先添加一個新類爲您的測試與[的TestFixture]屬性: -

[TestFixture] 
public class ScreenshotTest 

添加儘可能多的測試方法,只要你喜歡: -

[Test] 
public void DoScreenshotTest() 

如果你有一些初始化/最終確定要運行的代碼,以便在此類中的所有測試中添加方法: -

[SetUp] 
public void DoTestSetup() 

[TearDown] 
public void DoTestTeardown() 

如果您建立d你的解決方案並打開測試視圖窗口(測試 - > Windows->測試視圖),你應該看到你的新測試方法。然後,您可以右鍵單擊並「運行選擇」或「調試選擇」

以下是完整版本的代碼HTH!

[TestFixture] 
public class ScreenshotTest 
{ 
    private IE ie; 

    [SetUp] 
    public void DoTestSetup() 
    { 
     ie = new IE(); 
    } 

    [TearDown] 
    public void DoTestTeardown() 
    { 
     if (ie != null) 
     { 
      if (TestContext.CurrentContext.Outcome == TestOutcome.Failed) 
       ie.CaptureWebPageToFile(@"C:\Documents and Settings\All Users\Favorites.png"); 

      ie.Close(); 
      ie.Dispose(); 
      ie = null; 
     } 
    } 

    [Test] 
    public void DoScreenshotTest() 
    { 
     Assert.IsNotNull(ie); 

     using (TestLog.BeginSection("Go to Google, enter MbUnit as a search term and click I'm Feeling Lucky")) 
     { 
      ie.GoTo("http://www.google.com"); 
      ie.TextField(Find.ByName("q")).TypeText("MbUnit"); 
      ie.Button(Find.ByName("btnI")).Click(); 
     } 

     Assert.IsTrue(ie.ContainsText("NUnit"), "Expected to find NUnit on the page."); 
    } 
} 
+0

此外,在你的例子中,你知道你做三個獨立的IE實例嗎?一個在DemoCaptureOnFailure中,一個在DisposeBrowser中。 –