Whenever I try running an Unit Test no matter if it was already part of the solution or if I create my own I get this exception when the test includes something with mocking SLProtocol.
Test method Skyline.Protocol.TrapProcessing.Tests.TrapProcessorTests.IsTrapIdImplementedTest threw exception:
System.IO.FileNotFoundException: Could not load file or assembly 'SLManagedScripting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
at Skyline.Protocol.TrapProcessing.Tests.TrapProcessorTests.IsTrapIdImplementedTest()
The SLManagedScripting dll is part of the solution I've checked, also I've tried pointing to another version which another developer sent me which works for them. This is happening with drivers as soon as I clone them straight from git, if it contains unit test with SLProtocol the test fails.
Some protocols with Unit Test which I ran but got the exception.
Miranda IControl General
Telestream Inspect 2110
After looking online I saw something about changing to X64 or X86 which doing so didn't work and I wasn't able to find anything else.
I' using VS 2017
This is how the solution looks, also there are no errors in the code.
Hi Geovanny,
Could it be that the Default Processor Architecture has been set to X64? (If this is set to X64, it generates the BadImageFormatException you mention.) In Visual Studio 2017, from the menu bar, this can be configured under Test > Test Settings > Default Processor Architecture. If this is set to X64, change it to X86.
Hi Geovanny,
The exception means that visual studio fails to find the SLManagedScripting.dll-file or one of the dll that SLManagedScripting relies on. This can happen when the path used in the reference is not relative (causing it to point to non existent locations) or your local setup differs from the ones used by the people commiting the test.
You can check this by going to the testproject->references->right click SLManagedScripting->properties. Check if the path points to the SLManagedScripting.dll. From my test this should point to your local DataMiner installation.
It could also be that a reference of SLManagedScripting is missing. If the path points to the dma and the dma is healthy then this should be ok. If the path points to a custom file, then this is likely the issue and you will have to copy over the necessary files to the folder where the SLManagedScripting.dll resides.
Hi Brent,
Correct the path for the SLManagedScripting.dll is pointing to the local DMA (C:Skyline DataMinerFilesSLManagedScripting.dll). I also compared this to another developer’s setup, and everything was the same. Visual studio is able to access the dll since there are no compile issues, its only when I click on “Run Unit Test” that I get the error.
I even upgraded my DMA in case it was something with the dll itself, but this didn’t fix the issue.
The issue was solved by forcing the target to use x86 instead of Any CPU for the Unit Test Project.
Thanks to Pedro, to do so Right click the unit test project Properties > Build > “Platform target:” set x86
The unit test are now running successfully.