所以我有一些代码(我没写)在运行或调试时作为单元测试工作,但当完全相同的代码与程序正常运行时,它的行为有所不同。我使用安装了NUnit的Visual Studio Ultimate 2013,在Windows 7 64位上运行。要作为单元测试运行,我使用Visual Studio测试资源管理器。我对单元测试并不熟悉,所以我真的希望我忽略了一些简单的事情。
这是代码的样子:
//The code in question
public static void TryThis()
{
USBHIDDRIVER.USBInterface usbIa = new USBInterface("0");
String[] list = usbIa.getDeviceList(); //empty when calling from Main()
Assert.IsNotEmpty(list);
}
//A unit test that calls this code
[Test]
public static void CallingFunction()
{
TryThis(); //list gets populated and assert passes
}
//Main function that calls this code when program running - doesn't
public static void Main()
{
TryThis(); //list remains empty and assert fails
}
代码从System32调用DLL(setupapi.dll是特定的),并且此函数调用是行为发生差异的地方,因此我无法单步查看导致不同行为的确切原因。在整个解决方案中没有[SetUp]或[TearDown]属性或类似的东西。只有[TestFixture]和[Test]。
我的问题是:从单元测试而不是Main()调用TryThis()时可能会有什么不同?
我尝试过的事情:
我会非常感谢任何反馈或想法,无论它们多么疯狂。最后,我只需要能够在应用程序中使用此代码。谢谢!