martes, 16 de julio de 2013

Cuando hago una referencia en mi proyecto, desaparecen los objetos de otra

Tengo una solución compuesta por dos proyectos, más uno de Test.

image

En este último, hago primero la referencia al primer proyecto, de librería de clases, y doy de alta el using adecuado para que en el test pueda instanciar la clase que quiero probar.

using JamonEasy_DAL;
using JamonEasy_Model;

namespace JamonEasy_DAL.Test
{
    [
TestClass()]
   
public class OperacionesDALTests
   
{
        [
TestMethod()]
       
public void pruebaTest()
        {
           
var operaciones = new OperacionesDAL();

           
Assert.Fail();
        }
    }
}

El problema surge cuando añado la referencia del proyecto en donde tengo las entidades… y que hace que, automáticamente, desaparezca los objetos del proyecto anteriormente referenciado.

Dándole mil vueltas, descubrí el problema; que, al no ser identificado por el propio IDE, es bastante casual que lo haya encontrado.

image

Entre tantas pruebas, borrados y renombrados, ambos proyectos tenían el mismo nombre de ensamblado. con cambiar el nombre de uno y recompilar, se arreglo todo.

No me sale el namespace del proyecto en los test

Hete aquí una muy buena razón para que MS vuelva a incluir dentro de Visual Studio 2013 la construcción automática de los Test Unitarios y de los proyectos de Test, partiendo de una clase o método.

Hago un proyecto de librería de clases con un solo fichero,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JamonEasy_DAL
{
   
public class OperacionesDAL
   
{
       
public void prueba()
        { }
    }
}

A esto que le añado a mano el proyecto de test, y ni corto ni perezoso le añado la referencia al proyecto padre.

Y aquí llega la sorpresa, al utilizar el using, el intellisense me indica que no existe el espacio de nombre JamonEasy_DAL!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using JamonEasy_DAL;

namespace JamonEasy_DAL.Test
{
    [
TestClass()]
   
public class OperacionesDALTests
   
{
        [
TestMethod()]
       
public void pruebaTest()
        {
           
Assert.Fail();
        }
    }
}

¿Qué puede estar pasando?

En mi caso la solución ha sido fácil. El proyecto de librería de clases tenía como “target” el framework 4.5.1, y los test se construyen por defecto en 4.5, a secas.

Así, igualando hacia arriba o hacia abajo, se elimina el problema.

P.D. Échale un vistazo mi artículo en GenbetaDev sobre el Unit Test Generator, algo muy recomendable de instalar.