在64位环境下以32位进程运行指定的NUnit测试

4
我有一个组件,使用OLEDB从Excel文件导入数据。由于业务风险和时间限制,我的可执行外壳编译为x86(32位),以避免64位OLEDB问题,当加载到我的32位外壳时,该组件运行得非常流畅。
然而,我的CI构建过程(TeamCity)在64位进程中运行其TestRunner,因此针对上述功能的单元测试失败,并显示以下常见错误消息:
“测试失败。System.InvalidOperationException:本地计算机未注册'Microsoft.Jet.OLEDB.4.0'提供程序。”
我的解决方案似乎是:
1. 更改CI测试运行程序 - 不可行,因为测试运行程序被10个其他团队使用。 2. 确保此测试在32位进程中运行。

那么,有没有办法告诉NUnit或TeamCity NUnit测试运行器在32位进程中运行特定的测试?理想情况下,我希望相同的测试在IDE和CI中都能不经修改地运行。

1个回答

5
将单元测试项目的 “平台目标” 更改为 x86 应该就可以解决问题。

那不会影响整个测试项目吗?我猜楼主想要针对特定的测试进行这样的操作。 - Srikanth Venugopalan
@SrikanthVenugopalan:是的,它会影响整个测试项目。由于完整的应用程序是作为x86执行的,我认为当完整的测试套件也作为x86执行时应该没问题。 - Daniel Hilgarth
对我来说没问题,也许@MarkGreen可以决定。 - Srikanth Venugopalan
1
如果有一个测试级别的粒度解决方案,我会更加出色,但我想我总是可以创建一个1组件测试装配。 - Barracoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接