2009-10-29 5 views
11

testfile (AccountTest.cs)을 사용하여 파일 (Account.cs)을 테스트하려고합니다. 나는 Mono Framework (그리고 nunit-console)로 OSX 10.6을 돌린다.모노 및 nunit 테스트를 사용한 코드 적용

mcs -t:library Account.cs 
mcs -t:library -r:nunit.framework,Account.dll AccountTest.cs 

얻을 계정 :

namespace bank 
{ 
    using NUnit.Framework; 

    [TestFixture] 
     public class AccountTest 
     { 
      [Test] 
       public void TransferFunds() 
       { 
        Account source = new Account(); 
        source.Deposit(200.00F); 
        Account destination = new Account(); 
        destination.Deposit(150.00F); 

        source.TransferFunds(destination, 100.00F); 
        Assert.AreEqual(250.00F, destination.Balance); 
        Assert.AreEqual(100.00F, source.Balance); 
       } 
      [Test] 
       [ExpectedException(typeof(InsufficientFundsException))] 
       public void TransferWithInsufficientFunds() 
       { 
        Account source = new Account(); 
        source.Deposit(200.00F); 
        Account destination = new Account(); 
        destination.Deposit(150.00F); 
        source.TransferFunds(destination, 300.00F); 
       } 
     } 

} 

나는 이러한 두 개의 파일을 컴파일 : 아래

는 AccountTest.cs
namespace bank 
{ 
    using System; 
    public class InsufficientFundsException : ApplicationException 
    { 
    } 
    public class Account 
    { 
     private float balance; 
     public void Deposit(float amount) 
     { 
      balance+=amount; 
     } 

     public void Withdraw(float amount) 
     { 
      balance-=amount; 
     } 

     public void TransferFunds(Account destination, float amount) 
     { 
      destination.Deposit(amount); 
      Withdraw(amount); 
     } 

     public float Balance 
     { 
      get { return balance;} 
     } 
     private float minimumBalance = 10.00F; 
     public float MinimumBalance 
     { 
      get{ return minimumBalance;} 
     } 
    } 
} 

Account.cs

입니다 그리고 여기 .dll 및 AccountTest.dll.

은 내가 사용하는 테스트를 실행하려면 :

nunit-console AccountTest.dll 

을 그리고 그것은 나에게 해당하는 장애를주고, 예상대로 실행하고 전달합니다.

그러나 지금은 모노의 코드 커버리지 기능을 사용하여 이러한 테스트를 테스트하려고합니다. 적용 도구를 실행하려면 튜토리얼 http://mono-project.com/Code_Coverage을 읽으 려합니다. 그리고 그것을 사용하려면 * .dll 파일보다는 * .exe 파일로 컴파일해야합니다.

누군가가 AccountTest.cs 파일의 기본 클래스로 나를 도울 수 있다면, 나는 그것을 exe에서 컴파일 할 수있을 것이고 거기에서 커버리지 툴을 사용할 수있을 것이다.

미리 감사드립니다.

: 당신은 오른쪽 페이지를 가리키는

답변

6

"NUNIT - console2 직접 단위 테스트를 실행하는 동안 다음과 같이 MONO_OPTIONS를 지정, 유사한 옵션을 사용하려면 : MONO_OPTIONS ="- 프로필 = monocov : + [하여 MyAssembly] " nunit-console2 MyTestAssembly.dll "

옵션을 설정하여 단위 테스트를 실행하고 코드 적용 범위를 확보 할 수 있습니다.

1

내 새로운 모노 코드 커버리지 도구 Baboon을 사용해 볼 수도 있습니다. monocov 및 cov 프로파일 러는 메서드 입력/종료 만 확인하지만 Baboon은 정적 이니셜 라이저 및 비공개 멤버를 포함하여 프로그램의 각 메소드의 각 라인 범위를 확인할 수 있습니다.

$ echo assembly:MyTestFixture > ~/test.cfg 

위의 코드는 baboon에게 어셈블리의 코드를 보도록 지시하는 구성 파일을 만듭니다. 그런 다음 환경 변수를 설정하고 실행하십시오. -

$ BABOON_CFG=$HOME/test.cfg covem.exe /opt/nunit/nunit-console.exe MyTestFixture.dll 

회전하십시오! mono 3.x에서 가장 잘 작동합니다. GUI를 실행하기 위해 gtk-sharp가 설치되어 있어야합니다. 기본 html 보고서를 생성 할 수도 있습니다.

나는 Linux에서이 글을 쓰고 있지만, OSX에서도 동일하게 실행되어야한다.

기능 요청/버그 신고를 환영합니다!

관련 문제