2010-11-18 7 views
0

私はC#/ VS2008でコンソールアプリケーションを作成しました。その中には、アクセシビリティ修飾子を指定せずに宣言された複数のクラスがあります。 Likeアクセシビリティエラー:コンソールアプリケーションのNUnit

Namespace MyNamespace 
{ 
    Class MyClass 
    { 
    .. 

    } 
} 

ここでは、テスト用の新しいコンソールアプリケーションを追加しました。私はNUnitフレームワークDLLへの参照を追加しました。そして、私のメインプロジェクトのDLLへの参照。しかし、私のTestFixtureクラスにMyClassのオブジェクトを作成しようとすると、 "MyNamespace.MyClassが保護レベルのためにアクセスできない"のようなエラーが表示されます

私のクラスをpublicとして作成する必要はありますか?しかし、もし私のプロジェクトがそれを買う余裕がないのであれば?あなたのプロジェクトがあなたは[InternalsVisibleTo]属性を見てみることそれを買う余裕ができない場合

namespace MyNamespace 
{ 
    public class MyClass 
    { 

    } 
} 

答えて

4

クラスには、それが別のアセンブリからアクセスできるようにしたい場合はpublicする必要があります。

+0

私はそれをpublicに変更できない場合、NUnitを使用してアプリケーションをすべてテストすることはできませんか? –

+1

NUnitだけでなく、テストフレームワークもあります。ユニットテストではいつも反射を使用することができますが、これは足で自分を撃つようなものです。もちろんこれは、アプリケーションの単体テストができないことを意味するものではありません。このクラスが公開されていない場合は、作成者が現在のアセンブリの外部からアクセスできるように意図していないことを意味します。このクラスに内部的に依存するパブリックメソッドを常にテストすることができます。また、暗黙的にテストすることもできます。 –

+0

次に、メインプロジェクト自体にテストクラスを持たせることはできますか?それはテストを実行するためには、実践者ですか? –

関連する問題