2012-05-14 15 views
5

He examinado google y stack over flow y he leído todas las publicaciones sobre cómo hacer que InternalsVisibleTo funcione.InternalsVisibleTo no funciona para MSTest

Pero no funciona para mí.

Por favor, no votar en contra de esta pregunta porque he hecho todo lo posible para parecer y poner en práctica las respuestas en los foros ..

Mi código es el siguiente:

* Dentro del proyecto TestInternal *

namespace TestInteral 
{ 
    [TestClass] 
    public class MyProviderTest 
    { 
     [TestMethod] 
     public void TestBar() 
     { 
      bool retval = false; 

      retval = new MyProviderClass().Bar(); 

      Assert.AreEqual(true,retval); 
     } 

    } 
} 

* Dentro del proyecto * Proveedor

[assembly: InternalsVisibleTo("TestInternal")] 
namespace Provider 
{ 

    public class MyProviderClass 
    { 
     internal bool Bar() 
     { 
      return true; 

     } 

     private void UseBar() 
     { 
      bool retval = Bar(); 

     } 
    } 
} 

Recibo el siguiente error en mi clase de prueba.

El error 1 'Provider.MyProviderClass' no contiene una definición para 'Bar' y no se puede encontrar ningún método de extensión 'Bar' que acepte un primer argumento de tipo 'Provider.MyProviderClass' (¿falta una directiva using o una referencia de ensamblado?)

por favor, hágamelo saber cómo podría utilizar el InternalsVisibleTo correctamente para que pudiera probar correctamente el método interno en el MyProviderClass.

Gracias

+0

¿Estás seguro de que tienes un proyecto de proveedor al que se hace referencia en TestInternal? ¿Intentó crear primero el proyecto de Proveedor? ¿Está firmado el proyecto del proveedor? – cre8or

+0

El proveedor está referenciado en TestInternal. Logré * primero * construir * Provider Project. El proyecto del proveedor NO está firmado. gracias .. –

+0

De acuerdo con la documentación de MS, ambos conjuntos deben estar sin firmar o firmados –

Respuesta

10

Suponiendo que acaba de copiar y pegar el código exacto en la cuestión, esto es un simple error tipográfico. Noté que su espacio de nombre en el ensamblaje de prueba es TestInteral sin 'N'. Y su declaración InternalsVisibleTo tiene la última 'N':

[assembly: InternalsVisibleTo("TestInternal")] 

Eso es probablemente todo lo que es.

+0

Bien, tales errores son los más imposibles de rastrear :-) – cre8or

+0

Gracias ... esto fue tan difícil para mí ver ... buena captura –

+0

este código está funcionando ahora ... gracias a todos los que respondieron ... esto podría usarse como un tutorial que lo intenta por primera vez. –