我试图测试用C#编写的需要.NET 3.5的POS驱动程序。我将NUnit用于VS17,因为我有一个用C#编写的控制台应用程序代码,并且对该驱动程序进行了功能测试。
这很好,但是当我尝试从NUnit调用相同的方法时,会引发异常。
这是工作代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FiscalReceipt.Library;
namespace FiscalReceiptMain
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Setting [STAThread] ");
FiscalReceipt.Library.FiscalReceipt mc = new FiscalReceipt.Library.FiscalReceipt();
int output = mc.testFiscalReceiptClass();
Console.WriteLine("Number of exception = {0}", output);
System.Environment.Exit(0);
}
}
}
问题当然在testFiscalReceiptClass
内部:
namespace FiscalReceipt.Library
{
public class FiscalReceipt
{
private PosExplorer posExplorer;
private PosCommon posCommonFP;
// Exception counter
public static int NumExceptions = 0;
public FiscalReceipt()
{
posExplorer = null;
posCommonFP = null;
}
// Method to test the original FiscalReceiptClass
public int testFiscalReceiptClass()
{
try
{
// Console.WriteLine("Initializing PosExplorer ");
posExplorer = new PosExplorer();
}
catch (Exception e)
{
// ...
}
}
}
}
如果我从控制台应用程序创建posExplorer
对象,则没有问题,但是当我尝试调试NUnit时会引发异常:
{“'Microsoft.PointOfService.Management.Explorer'类型的初始化程序引发了异常。”} InnerException {“此方法显式使用.NET Framework中过时代码访问的安全策略。兼容性目的,请使用NetFx40_LegacySecurityPolicy配置选项。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=155570。“} System.Exception {System.NotSupportedException}
Nunit似乎是与我的DLL不兼容的64位库。我花了超过24个工作小时来尝试许多解决方案,但现在我被锁定了。
建议?