このメソッドに最後の行に1つのブレークポイントを設定し、テストエクスプローラの "Debug selected tests"でデバッグすると、テストのpdbにUnauthorizedAccessException
が表示されますテストが中止されます。ユニットテストをデバッグしようとするpdbのUnauthorizedAccessException
module Tests
open System
open Xunit
[<Fact>]
let fact() =
let rng = Random()
let a = rng.Next() % 2 = 0
let b = rng.Next() % 2 = 0
a && b // <- breakpoint here
どこにでもブレークポイントを置くと、うまくデバッグできます。私はその行にブレークポイントを置くことができ、メソッドのどこかにブレークポイントがあればデバッグすることができます。最後のブレークポイントは空になります(生成されたコードと一致しません)。最後の行の&&
が重要と思われます。削除すると問題が解消されます。たとえば、このバージョンでは問題は発生しません:
[<Fact>]
let fact() =
let rng = Random()
let a = rng.Next() % 2 = 0
let b = rng.Next() % 2 = 0
let result = a && b
result // can put a breakpoint anywhere and debug fine
私は、私もすべて正確に同じ参照とApp.configファイルを使用して、取り組む他の多くのプロジェクトを含む、特定のソリューションの外REPROことができませんでした。私はすでにかなりの時間をかけてこの問題を解決しようとしており、この時点でヒントを探しています。ここで彼らはとにかく、次のとおりです。
App.configファイル:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="xunit.methodDisplay" value="method"/>
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="xunit.core" publicKeyToken="8d05b1bb7a6fdb6c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.0.3179" newVersion="2.1.0.3179" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FSharp.Core" version="4.0.0.1" targetFramework="net46" />
<package id="xunit" version="2.1.0" targetFramework="net46" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net46" />
<package id="xunit.assert" version="2.1.0" targetFramework="net46" />
<package id="xunit.core" version="2.1.0" targetFramework="net46" />
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net46" />
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net46" />
<package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net46" />
</packages>
Visual Studioのエンタープライズ2015アップデート3(バージョン14.0.25424.00)
私はApp.configに ' 'を追加し、本当に 'UnauthorizedAccessException'を取り除きました! 'Microsoft.VisualStudio.TestPlatform.TestExecutor.Core.dll'に' InvalidOperationException'が残っていますが、 '進行中のテスト実行がないため、テスト実行の取り消しはできません。 'が、テストは正常に完了しています。 –
Asik
それを聞いて嬉しいです。私はしばしばテストランナーが(処理された)例外を生成するのを見ましたが、ブレークオンスローでデバッグする際には不都合以外の問題は生じませんでした! – marklam