2010-11-18 47 views
0

J'ai écrit une application console en C#/VS2008. En cela j'ai plusieurs classes déclarées sans spécifier de modificateur d'accessibilité. CommeErreur d'inaccessibilité: NUnit avec l'application console

Namespace MyNamespace 
{ 
    Class MyClass 
    { 
    .. 

    } 
} 

Maintenant, j'ai ajouté une nouvelle application de console à des fins de test. J'ai ajouté une référence à NUnit framework dll. Et puis une référence à mon projet principal dll. Mais quand j'essaye de créer un objet de MyClass dans ma classe TestFixture, j'obtiens une erreur comme "MyNamespace.MyClass est inaccessible en raison de son niveau de protection"

Ai-je besoin de créer ma classe en public? Mais que faire si mon projet ne peut pas se le permettre?

Répondre

4

La classe a besoin d'être public si vous voulez qu'il soit accessible depuis un autre ensemble:

namespace MyNamespace 
{ 
    public class MyClass 
    { 

    } 
} 

Si votre projet ne peut pas se le permettre vous peut jeter un oeil à [InternalsVisibleTo] attribut.

+0

Est-ce que cela signifie - Si je ne peux pas le changer en public alors je ne peux pas tester mon application du tout en utilisant NUnit? –

+1

Non seulement avec NUnit mais avec n'importe quel framework de test. Vous pourriez toujours utiliser la réflexion dans vos tests unitaires, mais ce serait comme vous tirer dans les jambes. Bien sûr, cela ne signifie pas que vous ne pouvez pas tester votre application unitaire. Si cette classe n'est pas publique, cela signifie que l'auteur n'a pas voulu qu'il soit accessible en dehors de l'assemblage actuel. Vous pouvez toujours tester les méthodes publiques qui dépendent intrinsèquement de cette classe et vous allez également la tester implicitement. –

+0

Ensuite, puis-je avoir ma classe de test dans le projet principal lui-même? alors sera-t-il practicle pour exécuter les tests? –