【问题标题】:Can't test NServicebus Message Handlers with Messages which implement generics无法使用实现泛型的消息测试 NServicebus 消息处理程序
【发布时间】:2010-11-05 07:07:44
【问题描述】:

我正在使用:

  • nservicebus 2.0.0.0
  • nservicebus.Testing 2.0.0.0
  • VS2010
  • nUnit
  • .NET 4.0
  • c#

我正在使用 nservicebus.Testing 命名空间,该命名空间由 nservicebus 提供,用于测试 IMessage 处理程序。

我的测试在调用 IMessage 处理程序时抛出了这个错误:

System.InvalidOperationException: 后期绑定操作不能 对类型或方法执行 其中 ContainsGenericParameters 是 真的。

如果我在测试项目中删除对包含实现泛型的 IMessage 的程序集的引用,则此错误消失并且测试运行良好。

注意我正在测试的处理程序没有处理泛型消息,bin 文件夹中仅存在泛型消息就会导致错误。

但是我希望能够测试实现泛型的 IMessage 的处理程序,这可能吗?

干杯

【问题讨论】:

  • 您能否提供消息处理程序的代码 + 作为参考包含时似乎导致错误的消息实现?
  • 这个异常实际上是从哪里来的?堆栈跟踪真的很有帮助。

标签: c# unit-testing generics reflection nservicebus


【解决方案1】:

问题在于 NServiceBus 测试库通常使用与 NServiceBus 相同的程序集类型扫描逻辑。为了防止扫描有问题的程序集,请调用 Test.Initialize(params Assembly[] assembly);

话虽如此,不建议使用泛型的消息。

【讨论】:

  • 酷,谢谢 udi。是的,我听说你不推荐它,在真正的分布式风格中,我不“拥有”这些消息,但我可以与所有者交谈。无论如何,您能否为我确认一下,您是说我无法使用实现泛型的 .Testing 测试消息处理程序吗?
  • 没有检查过,但作为一种哲学,NServiceBus 有意不支持不推荐的东西——我们不想让架构错误变得容易。
  • 了解,但最好知道什么是实际支持的,什么是不支持的。在我看来,nservicebus 使用通用消息运行得非常好,但无法对其进行测试。在使用时警告用户肯定会更有意义......?这就像参数异常,最好将它们放在方法的顶部,这很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2011-09-15
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多