ロギングライブラリを書いています。ライブラリは、デフォルトで、アプリケーションに名前が付けられた共通のアプリケーションデータフォルダー内のディレクトリに書き込みます。たとえば、アプリケーションの名前が「MyApplication.exe」の場合、データを「C:\ ProgramData\MyApplication」に保存します。
私はこのコードを使用してパスを作成しています:
private static string loggingDataPath =
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
Path.DirectorySeparatorChar +
Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().CodeBase) +
Path.DirectorySeparatorChar;
これは期待どおりに機能しますが、1つの問題があります。ライブラリの単体テストができません!
単体テストを実行しようとすると、すべてSystem.NullReferenceExceptionで失敗します。「Assembly.GetEntryAssembly()。CodeBase」呼び出しを文字列に置き換えると、単体テストが再び正しく機能します。
なぜこれが起こるのかは理解できたと思いますが、問題を回避する方法がわかりません。誰かが私を義の道に導いてくれることを願っています。
TIA!
更新(5-24-12):「loggingDataPath」の内容を単体テストしようとはしていません。「Assembly.GetEntryAssembly()。CodeBase」呼び出しが存在するだけで、上記の例外を除いてすべての単体テストが失敗します。「loggingDataPath」は静的であることに注意してください(これは静的ライブラリであるため、静的である必要があります)。