我已经使用WATIN自动化模块,现在我希望测试结果显示为PASS / FAIL状态等(报告),Watin中是否有任何功能可以执行我所需的操作。
就像我有像
这样的代码 public static void TestSelectPatientLink()
{
try
{
Link lnkSelectPatientb = ie.Link(Find.ByTitle("Search patient"));
lnkSelectPatientb.Blur();
lnkSelectPatientb.ClickNoWait();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
如何在VS 2010中运行此代码时发生的报告,是失败还是通过,如果失败,错误等,如何报告这些内容。
**仅供我使用Nunit和WatiN
答案 0 :(得分:2)
不,WatiN没有内置任何支持此功能的功能,但GarethStephenson的帖子是正确的。你可以写一个NUnit测试,它会给你一个通过/失败。
首先,要让IE与NUnit一起使用,您需要将以下内容添加到您的app.config
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<!-- Valid values are STA,MTA. Others ignored. -->
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
这是一个示例测试。它加载谷歌主页,抓取一些元素并断言它们存在: -
using WatiN.Core;
using NUnit.Framework;
namespace ConsoleApplication1
{
[TestFixture]
public class AutomatedTests
{
[Test]
public void DoGoogleTest()
{
using (IE browser = new IE())
{
browser.GoTo("www.google.co.uk");
Div logoDiv = browser.Div("hplogo");
Assert.IsTrue(logoDiv.Exists, "Logo div does not exist");
TextField searchText = browser.TextField("lst-ib");
Assert.IsTrue(searchText.Exists, "Search text field does not exist");
Button searchBtn = browser.Button(Find.ByName("btnK"));
Assert.IsTrue(searchBtn.Exists, "Search button does not exist");
Button nonExistantButton = browser.Button("garbagegarbagegarbage");
// This will cause the test to fail because the link doesn't (shouldn't!) exist.
// Comment it out and the test should pass
Assert.IsTrue(nonExistantButton.Exists, "Non-existant button does not exist");
}
}
}
}
不幸的是,NUnit不会自动与Visual Studios测试视图/测试列表窗口集成。您的选择是: -
上面的代码给出了结果: -
ConsoleApplication1.AutomatedTests.DoGoogleTest:
Non-existant button does not exist
Expected: True
But was: False
如果您注释掉最后一行,则不会报告任何错误。
如果您需要更多信息,请告知我们。 HTH!
编辑 为VS2010增加了Visual NUnit扩展程序的链接
答案 1 :(得分:1)
您总是可以使用NUnit等将该方法转换为单元测试方法。
[Test]
public void TestSelectPatientLink()
{
try
{
Link lnkSelectPatientb = ie.Link(Find.ByTitle("Search patient"));
lnkSelectPatientb.Blur();
lnkSelectPatientb.ClickNoWait();
}
catch (Exception ex)
{
// Capture the error screen so you can see what went wrong
ie.CaptureWebPageToFile("Error.jpg");
// Fail the test, use the unit testing framework's reporting to get your pass/fail
Assert.Fail(ex.ToString());
}
}
答案 2 :(得分:0)
订阅nunit事件(testFinished,testStarted)可能会有所帮助。但这需要为nunit开发插件 BR /维塔利