Visual Studio单元测试安全异常

本文关键字:异常 安全 单元测试 Studio Visual | 更新日期: 2023-09-27 18:01:42

我正在开发一个监视打印队列的应用程序。要做到这一点,它需要能够管理它们。当我运行应用程序进行调试时,它运行得很好,但是,当我尝试对类进行单元测试时,抛出了一个安全异常。有没有办法给visual studio单元测试一个更高的安全级别?

PrintQueue q = new PrintQueue(server, QueueName,
                    PrintSystemDesiredAccess.AdministratePrinter);

抛出异常:安全透明方法'MS.Internal.PrintWin32Thunk.PrinterDefaults.Dispose(Boolean)'访问安全关键方法'MS.Internal.PrintWin32Thunk.PrinterDefaults.InternalDispose(Boolean)'失败。

同样,当在单元测试之外使用时,不会抛出异常并且类按预期工作。我已经尝试以管理员身份运行visual studio,但仍然收到异常。

更新:看起来我将无法测试这个类。包含它的类库已经在。net 3.5中编写,这就是为什么在使用类时不会发生异常的原因。我做了一些进一步的实验,发现即使这个类库以。net 3.5为目标,抛出异常的类也不能被以。net 4.0为目标的应用程序使用。Visual studio测试项目需要以。net 4.0为目标。

您的问题可能与有关:http://connect.microsoft.com/VisualStudio/feedback/details/552520/methodaccessexception-when-printqueuecollection-disposed

这里列出了两种解决方案,其中一种是瞄准。net 3.5而不是4.0。

当你调试时,你确定异常没有在终结器线程上抛出吗?你没有说明什么时候处理掉它。如果显式调用dispose然后调试,是否会得到异常?例如

PrintQueue q = new PrintQueue(server, QueueName,
                PrintSystemDesiredAccess.AdministratePrinter);
q.Dispose();

Visual Studio单元测试安全异常