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即可。