我正在尝试将Xunit测试集成到我们的TFS构建中。
我已将xunit.runner.msbuild.dll和xunit.runner.utility.dll放在文件夹"C:\Program Files\MSBuild\Xunit"中。我在构建文件中有一个任务要调用 Xunit 任务:
<UsingTask AssemblyFile="$(MSBuildExtensionsPath)Xunitxunit.runner.msbuild.dll" TaskName="Xunit.Runner.MSBuild.xunit"/>
.....
<xunit Assembly="$(DropLocation)$(BuildNumber)ReleaseMyDll.dll" Html="TestRun.htm" />
我收到一个错误,我不知道如何调试。我尝试让"所有人"用户完全控制 Xunit 文件夹。
D:bld141BuildTypeTest.proj(50,3): error : System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
D:bld141BuildTypeTest.proj(50,3): error : at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
D:bld141BuildTypeTest.proj(50,3): error : at System.Security.CodeAccessPermission.Demand()
D:bld141BuildTypeTest.proj(50,3): error : at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
D:bld141BuildTypeTest.proj(50,3): error : at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
D:bld141BuildTypeTest.proj(50,3): error : at Xunit.Sdk.Executor..ctor(String assemblyFilename)
D:bld141BuildTypeTest.proj(50,3): error : at Xunit.ExecutorWrapper.RethrowWithNoStackTraceLoss(Exception ex)
D:bld141BuildTypeTest.proj(50,3): error : at Xunit.ExecutorWrapper.CreateObject(String typeName, Object[] args)
D:bld141BuildTypeTest.proj(50,3): error : at Xunit.ExecutorWrapper..ctor(String assemblyFilename, String configFilename, Boolean shadowCopy)
D:bld141BuildTypeTest.proj(50,3): error : at Xunit.Runner.MSBuild.xunit.ExecuteAssembly(String assemblyFilename, String configFilename, IRunnerLogger logger)
默认情况下,TFS 生成服务作为"网络服务"运行。可以通过在生成计算机上的服务控制管理器 (services.msc) 中检查 Team Foundation 生成服务的"属性"对话框的"标识"选项卡来检查这一点。如果使用的是 TFS 2010,还可以在生成计算机上的 TFS 管理控制台中检查标识。
有点令人惊讶的是,"所有人"组不包括"网络服务"帐户。因此,您需要向网络服务帐户授予对 XUnit 文件夹的读取/执行权限。我假设它是一个本地文件夹而不是网络共享。