.NETには、例えばinternalなクラスやメソッドのUnitTestをUnitTestプロジェクトから呼び出す仕組みとして、「InternalsVisibleTo」という属性があります。
従来の.NET Frameworkプロジェクトでは、プロジェクト作成時にPropertiesの下にAssemblyInfo.csが作成されその中に定義する方法が一般的でした。
しかし、.NET StandardにはAssemblyInfo.csが存在しません。
ここでは.NET StandardプロジェクトでInternalsVisibleToを設定する方法を紹介します。
結論から言いますと、適当な「~.cs」ファイルを作成しその中に定義すれば解決できます。
順を追って説明しましょう。
プロダクト プロジェクトとしてNetStdLibが存在し、対応するUnitTestプロジェクトとしてNetStdLib.Testsを作成するものとします。
この時、スコープがinternalなつぎのようなクラスが存在したとします。
namespace NetStdLib { internal class InternalClass { internal string SayHello() { return "Hello, InternalVisibleTo!"; } } }
このクラスのテストコードをNetStdLib.Tests側に作成します。
すると当然アクセスできずエラーとなります。
そこでNetStdLib側に、通常のクラスを作成するのと同じ手続きでAssemblyInfoクラスを作成します。(ファイル名は実際のところ何でも問題ありません。)
作成すると、つぎのようなコードが自動生成されます。
これを全て削除して、次の2行に置き換えます。
using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("NetStdLib.Tests")]
これでNetStdLib.TestsプロジェクトからNetStdLibプロジェクトのinternalレベルへのアクセスが可能となります。
以上です。