2009-10-29 11 views
11

Estoy tratando de probar un archivo (Account.cs) usando testfile (AccountTest.cs). Ejecuto OSX 10.6 con Mono Framework (y nunit-console).Cobertura de código usando pruebas mono y nunit

A continuación se 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;} 
     } 
    } 
} 

Y aquí es 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); 
       } 
     } 

} 

puedo compilar estos dos archivos:

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

Y conseguir Cuenta .dll y AccountTest.dll respectivamente.

Para ejecutar la prueba de uso:

nunit-console AccountTest.dll 

y funciona como debería, y me da los fallos correspondientes y pasa.

Sin embargo, ahora quiero usar la capacidad de cobertura de código mono para evaluar estas pruebas. Estoy leyendo el tutorial http://mono-project.com/Code_Coverage para ejecutar las herramientas de cobertura. Y para usarlo necesitaría compilar en el archivo * .exe en lugar del archivo * .dll.

Si alguien pudiera ayudarme con la clase principal del archivo AccountTest.cs, podría compilarlo en exe y desde allí usar la herramienta de cobertura.

Gracias una tonelada por adelantado.

Respuesta

6

Usted está apuntando a la página correcta:

"Para utilizar las opciones similares durante la ejecución de pruebas unitarias directamente con nunit-consola2, especifique MONO_OPTIONS de la siguiente manera: MONO_OPTIONS =" - Perfil = monocov: + [MyAssembly]" nunit-console2 MyTestAssembly.dll "

Puede ejecutar las pruebas unitarias y obtener la cobertura del código estableciendo la opción.

1

Puede que quiera probar Baboon mi nueva herramienta de cobertura de código mono. Los perfiladores monocov y cov solo verifican la entrada/salida del método mientras que Baboon puede verificar la cobertura de cada línea de cada método en su programa, incluidos los inicializadores estáticos y los miembros privados.

$ echo assembly:MyTestFixture > ~/test.cfg 

Lo anterior crea un archivo de configuración que le dice babuino que mirar el código en su montaje. A continuación, establezca la variable de entorno y ejecútelo: -

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

¡Dale un giro! Funciona mejor en mono 3.x, necesitará instalar gtk-sharp para ejecutar la GUI o puede generar un informe html básico.

Lo he estado escribiendo en Linux, pero debería funcionar igual de bien en OSX.

Peticiones de funciones/informes de errores más que bienvenidos!

Cuestiones relacionadas