我正在写一个日志库。默认情况下,我希望库写入为应用程序命名的公共应用程序数据文件夹中的目录。例如,如果应用程序名为“MyApplication.exe”,我希望将数据保存在“C:\ProgramData\MyApplication”中。
我正在使用此代码来构造路径:
private static string loggingDataPath =
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
Path.DirectorySeparatorChar +
Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().CodeBase) +
Path.DirectorySeparatorChar;
这完全符合预期,但有一个问题。我无法对库进行单元测试!
当我尝试运行单元测试时,它们都因 System.NullReferenceException 而失败。如果我用字符串替换“Assembly.GetEntryAssembly().CodeBase”调用,单元测试将再次正常运行。
我想我理解为什么会发生这种情况,但我不知道如何解决这个问题。我希望有人能够让我走上正义的道路。
蒂亚!
更新 (5-24-12):我不想对“loggingDataPath”的内容进行单元测试。仅存在“Assembly.GetEntryAssembly().CodeBase”调用会导致所有单元测试因上述异常而失败。请注意,“loggingDataPath”是静态的(因为它必须是静态库)。