2009-10-29 36 views
11

Tôi đang cố gắng kiểm tra tệp (Account.cs) bằng cách sử dụng tệp thử nghiệm (AccountTest.cs). Tôi chạy OSX 10.6 với Mono Framework (và nunit-console).Phạm vi mã sử dụng thử nghiệm đơn điệu và đơn vị

Dưới đây là Account.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;} 
     } 
    } 
} 

Và đây là 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); 
       } 
     } 

} 

tôi biên soạn hai tập tin này bằng cách:

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

Và nhận tài khoản .dll và AccountTest.dll tương ứng.

Để chạy thử nghiệm tôi sử dụng:

nunit-console AccountTest.dll 

và nó chạy như bình thường, đem lại cho tôi những thất bại phù hợp và vượt qua.

Tuy nhiên, bây giờ tôi muốn sử dụng khả năng bao phủ mã của mono để đánh lừa các thử nghiệm này. Tôi đang đọc hướng dẫn http://mono-project.com/Code_Coverage để chạy các công cụ phủ sóng. Và để sử dụng nó, tôi sẽ cần phải biên dịch vào tập tin * .exe chứ không phải là tập tin * .dll.

Nếu ai đó có thể giúp tôi với lớp chính của tệp AccountTest.cs, tôi sẽ có thể biên dịch nó trong exe và từ đó sử dụng công cụ bảo hiểm.

Cảm ơn trước một tấn.

Trả lời

6

Bạn đang trỏ đến trang phải:

"Để sử dụng tùy chọn tương tự khi chạy thử nghiệm đơn vị trực tiếp với nunit-console2, xác định MONO_OPTIONS như sau: MONO_OPTIONS =" - hồ sơ = monocov: + [MyAssembly]" nunit-console2 MyTestAssembly.dll "

Bạn có thể chạy các bài kiểm tra đơn vị của mình và nhận mức độ phù hợp mã bằng cách đặt tùy chọn.

1

Bạn có thể muốn dùng thử công cụ bảo vệ mã mono mới Baboon của tôi. Monocov và cov profilers chỉ kiểm tra phương thức nhập/thoát trong khi Baboon có thể kiểm tra mức độ phù hợp của từng dòng của từng phương thức trong chương trình của bạn, bao gồm các trình khởi tạo tĩnh và các thành viên riêng.

$ echo assembly:MyTestFixture > ~/test.cfg 

Ở trên tạo tệp cấu hình yêu cầu baboon xem mã trong hội đồng của bạn. Sau đó, đặt và biến môi trường và chạy nó: -

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

Cho nó một vòng quay! Hoạt động tốt nhất trên mono 3.x, Bạn sẽ cần cài đặt gtk-sharp để chạy GUI hoặc bạn có thể tạo báo cáo html cơ bản.

Tôi đã viết nó trên Linux nhưng nó sẽ chạy tốt như nhau trên OSX.

Yêu cầu tính năng/báo cáo lỗi được chào đón nhiều nhất!

Các vấn đề liên quan