2015-09-24 46 views
0

我有一個程序集需要在64位進程中運行,但我不能讓它在nunit亞軍中工作。如何在MacOSX上運行64bit的nunit測試?

我創建了一個測試代碼,非常簡單,只需打印出指針大小的主要功能,並在NUnit的測試功能:

using System; 
using NUnit.Framework; 

namespace PtrSize 
{ 
    class MainClass 
    { 
     [Test] 
     public static void Test() 
     { 
      Console.WriteLine ("IntPtr.Size    : {0}", IntPtr.Size); 
      Console.WriteLine ("Environment.Is64BitProcess : {0}", Environment.Is64BitProcess); 
     } 

     public static void Main (string[] args) 
     { 
      Console.WriteLine ("IntPtr.Size    : {0}", IntPtr.Size); 
      Console.WriteLine ("Environment.Is64BitProcess : {0}", Environment.Is64BitProcess); 
     } 
    } 
} 

然後我做了以下測試:

首先我確認單是64位內置

Build-Agent-Mac-01s-iMac:Debug BA-Mac-01$ ~/sandbox/mono64/bin/mono --version 
Mono JIT compiler version 3.10.0 (tarball Thu Jan 8 09:23:28 CET 2015) 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com 
    TLS:   normal 
    SIGSEGV:  altstack 
    Notification: kqueue 
    Architecture: amd64 
    Disabled:  none 
    Misc:   softdebug 
    LLVM:   supported, not enabled. 
    GC:   sgen 

然後我用這個單聲道運行我的測試程序,它是在64位進程:

Build-Agent-Mac-01s-iMac:Debug BA-Mac-01$ ~/sandbox/mono64/bin/mono PtrSize.exe 
IntPtr.Size    : 8 
Environment.Is64BitProcess : True 

然後,我使用nunit測試跑步者來運行它,它總是在32位模式下,我也嘗試了nunit-console-x86.exe,但仍然沒有幫助。

Build-Agent-Mac-01s-iMac:Debug BA-Mac-01$ ~/sandbox/mono64/bin/mono ~/Downloads/NUnit-2.6.4/bin/nunit-console.exe PtrSize.exe 
NUnit-Console version 2.6.4.14350 
Copyright (C) 2002-2012 Charlie Poole. 
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. 
Copyright (C) 2000-2002 Philip Craig. 
All Rights Reserved. 

Runtime Environment - 
    OS Version: Unix 14.5.0.0 
    CLR Version: 2.0.50727.1433 (Mono 3.5 (3.10.0 (tarball Thu Jan 8 09:23:28 CET 2015))) 

ProcessModel: Default DomainUsage: Single 
Execution Runtime: mono-3.5 
.IntPtr.Size    : 4 
Environment.Is64BitProcess : False 

Tests run: 1, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.0132951 seconds 
    Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0 

任何機構都有這個問題的想法?

回答

2

從Mono 4.2.1開始,安裝程序包含64位版本的mono。不幸的是,nunit-console命令仍然以32位運行。

要運行NUnit控制檯爲64位,你仍然需要使用mono64命令:

mono64 /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/nunit-console.exe <path to dll>