使用WatiN测试Web,常见问题及其解决方法

1.既然是测试,那么一般就要用到断言,大家一般采用NUnit做为断言工具,当我们使用NUnit进行断言WatiN的时候,gui上每每出现如下 错误

WatinStudy.Test.FindCustomerAndOrders.ShouldFindCustomer:
System.Threading.ThreadStateException : The CurrentThread needs to have it's ApartmentState set to ApartmentState.STA to be able to automate Internet Explorer.

线程必须是在STA模式下. 解决这个问题, 我们可以 给你要测试的dll,加入一个 config文件, config文件的名称必须要跟 dll的文件名称一致,(比如你要测试的dll文件名称为 Watin.Test.dll,那么你的config文件名称要为 Watin.Test.dll.config),在 这个config文件内加入如下xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <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>
</configuration>

这是使用NUnit进行断言的方式,不过我更喜欢 MbUnit.当我们使用MbUnit的时候,就不必像NUit那样麻烦的去配置xml文件. 需要的只是 在被测试的类的上 加入以下特性就ok了

[TestFixture(ApartmentState = ApartmentState.STA)]

另:我个人是及其喜欢的MbUnit的,因为其不久完全兼容 NUit而且,而且还其他了很多 方便的特性,此处的STA模式是一个,另外如果大家进行数据库测试的话,那么MbUnit的RollBack,能让你 对数据库的各种操作进行自动回滚.

2.WatiN启动IE,执行完 我们定义的各种操作,无法关闭IE.

这个问题,主要是 WatiN跟我们的IE的各种插件相冲突,如果你不能确定 具体跟IE的哪个插件相冲突,我建议大家还是把IE所有的插件都禁用好了.方法如下

工具--管理加载项--把有不用的加载项禁用掉--重新启动IE即可。

你可能感兴趣的:(常见问题)