I was wondering if anyone knows of this issue when attempting to unit test NServiceBus.
Realise I have two initialize methods below but this is to illustrate what I am trying to do. Stack trace based on request.
(NServiceBus.LocalAddress) was not present in the dictionary. (NServiceBus.LocalAddress) was not present in the dictionary.
Other part of the stack trace I believe is a red herring complaining about InMemoryPersistence. However, there is a Google group talking about this issue too who experienced the same issue which makes me think it's more of an NServiceBus issue rather than a coding mistake.
Google group link https://groups.google.com/forum/m/#!topic/particularsoftware/424_6KCv6oI
Should mention seen these posts.
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>()
};
}
}
After raising the issue on GitHub found that need to include NServiceBus.Testing as part of the assembly scanning. For example:
Should point out also, for further information I would visit the GitHub link. Further detail about the issue and an explanation can be found there.
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")
};
}
The key point being this Assembly.LoadFrom("NServiceBus.Testing.dll")
Cheers, DS.
In my case, the tests were failing with this error message in NCrunch.
That's probably because NCrunch was running the tests from the following location:
C:\Users\[username]\AppData\Local\NCrunch\...
The solution was to go to:
NCrunch -> Configuration
Select the project affected and set the flag 'Copy referenced assemblies to workspace' to True.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With