3

更新只是更详细地阅读了谷歌组,显然这是一个应用程序配置问题。尝试后会更新帖子。

我想知道在尝试对 NServiceBus 进行单元测试时是否有人知道这个问题。

意识到我在下面有两个初始化方法,但这是为了说明我正在尝试做的事情。基于请求的堆栈跟踪。

(NServiceBus.LocalAddress) 不在字典中。(NServiceBus.LocalAddress) 不在字典中。

我认为堆栈跟踪的其他部分是抱怨 InMemoryPersistence 的红鲱鱼。但是,也有一个 Google 小组也在讨论这个问题,他们遇到了同样的问题,这让我认为这更像是 NServiceBus 问题而不是编码错误。

谷歌群组链接https://groups.google.com/forum/m/#!topic/particularsoftware/424_6KCv6oI

应该提到看过这些帖子。

https://github.com/Particular/NServiceBus.Testing/issues/20 https://github.com/Particular/NServiceBus.Testing/commit/f761c5391b03b05d967f2e368248c72522051d59

public static class CustomInit
    {
        public static void Init()
        {
            //Previous versions of NBUS, specifically 4.6.5
            //MessageConventionExtensions.IsEventTypeAction = MessageConfiguration.ForEvents();
            //MessageConventionExtensions.IsCommandTypeAction = MessageConfiguration.ForCommands();            

            //New 5.2.0 how to setup tests
            Test.Initialize(x => x.AssembliesToScan(GetAssembliesToScan()));

            Test.Initialize(
                x =>
                {
                    x.Conventions().DefiningCommandsAs([my namespace]);
                    x.Conventions().DefiningEventsAs([my namespace]);
                    x.AssembliesToScan(GetAssembliesToScan());
                });
        }

        private static IEnumerable<Assembly> GetAssembliesToScan()
        {
            return new[]
            {
                AssemblyFromType<ISomeInterface>()
            };
        }
}
4

2 回答 2

6

GitHub 上提出问题后发现需要将 NServiceBus.Testing 作为程序集扫描的一部分。例如:

还应该指出,有关更多信息,我将访问 GitHub 链接。可以在此处找到有关该问题的更多详细信息和解释。

    public static void Init()
    {
        Test.Initialize(
            x =>
            {
                x.Conventions().DefiningCommandsAs(x => x.Namespace.Contains("Commands"));
                x.Conventions().DefiningEventsAs(x => x.Namespace.Contains("Events"));
                x.AssembliesToScan(GetAssembliesToScan());
            });
    }

    private static IEnumerable<Assembly> GetAssembliesToScan()
    {
        return new[]
        {
            AssemblyFromType<ISomeInterface>(),
            Assembly.LoadFrom("NServiceBus.Testing.dll")
        };
    }

关键是这个Assembly.LoadFrom("NServiceBus.Testing.dll")

干杯,DS。

于 2015-03-02T10:17:54.157 回答
1

就我而言,测试失败并在 NCrunch 中显示此错误消息。

这可能是因为 NCrunch 从以下位置运行测试:

C:\Users\[username]\AppData\Local\NCrunch\...

解决方案是去:

NCrunch -> Configuration

选择受影响的项目并将标记“将引用的程序集复制到工作区”设置为True

于 2017-01-17T09:46:13.277 回答