为什么“dotnet测试”在ubuntu LTS 14.04上失败?

时间:2016-01-12 07:30:08

标签: .net testing command-line-interface

任何人都可以帮我弄清楚如何在ubuntu中使用“dotnet”设置单元测试吗?现在dnx和dnu被dotnet取代了,我遇到了问题。

我有一个project.json文件,其中包含以下内容:

{                                                         
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": false
  },

  "dependencies": {
    "Microsoft.NETCore.Runtime": "1.0.1-beta-*",
    "xunit": "2.1.0-*",
    "xunit.runner.dnx": "2.1.0-*"
  },

  "commands": {
    "test": "xunit.runner.dnx"
  },

  "frameworks": {
    "dnxcore50": { }
  }
}

运行此命令时遇到问题:

dotnet test

以下是吐出来的:

dotnet-test Error: 0 : System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-localization-l1-2-0.dll': The specified module could not be found.
 (Exception from HRESULT: 0x8007007E)
   at Interop.mincore.FormatMessage(Int32 dwFlags, IntPtr lpSource_mustBeNull, UInt32 dwMessageId, Int32 dwLanguageId, StringBuilder lpBuffer, Int32 nSize, IntPtr[] arguments)
   at Interop.mincore.TryGetErrorMessage(Int32 errorCode, StringBuilder sb, String& errorMsg)
   at Interop.mincore.GetMessage(Int32 errorCode)
   at System.Diagnostics.Process.ResolvePath(String filename)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at Microsoft.DotNet.Cli.Utils.Command.Execute()
   at Microsoft.DotNet.Tools.Test.Program.RunConsole(ProjectContext projectContext, CommandLineApplication app, String testRunner)
   at Microsoft.DotNet.Tools.Test.Program.<>c__DisplayClass0_0.<Main>b__0()

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

可悲的是,我找到了一些google-fu之后的原因并通过dotnet代码进行挖掘(并通过github发布)。

底线:该功能尚未实现,并且每当尝试从无法找到的路径运行程序时,尝试pInvoke到Windows DLL中的错误(显然已经修复但不在当前发行版中)

在此查看:https://github.com/dotnet/cli/issues/407(阅读@piotrpMSFT的最后几篇文章)

最后结果是:

dotnet test

将尝试运行命令&#34; dotnet-test - &#34; if a&#34; testRunner&#34;尚未在project.json中指定。但是,如果project.json包含这样的testRunner:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": false
  },

  "testRunner": "xunit",

  "dependencies": {
    "Microsoft.NETCore.Runtime": "1.0.1-beta-*",
  },

  "frameworks": {
    "dnxcore50": { }
  }
}

然后它将尝试运行程序dotnet-test-xunit(因为&#34; testRunner&#34;设置为&#34; xunit&#34;)并将项目DLL作为参数传递。

来吧微软的家伙,帮帮我,所以我可以开始用测试编写C#NuGet包。