我注意到
返回的路径之间存在差异Directory.GetCurrentDirectory();
以及返回的路径
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
在每个程序集中运行某些mstest时以及同时运行它们时。
在当前示例中,我有一个公共项目,该项目由两个单元测试项目 Test1 和 Test2 引用。在普通项目中,我有以下课程:
public static class PathProvider
{
private static string GetWritingPathForTest(string testName) =>
"C:/file - " + testName + ".txt";
public static string Path1 => Directory.GetCurrentDirectory();
public static string Path2 =>
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
public static string Path3 => AppDomain.CurrentDomain.BaseDirectory;
public static void WritePaths(string testName)
{
var writingPath = GetWritingPathForTest(testName);
File.WriteAllText(writingPath, Path1 + Environment.NewLine);
File.AppendAllText(writingPath, Path2 + Environment.NewLine);
File.AppendAllText(writingPath, Path3 + Environment.NewLine);
}
}
在测试方法中,我只是调用WritePaths
方法以查看其内容。在执行第一个测试然后执行第二个测试时,结果如下:
测试1:
... \ Test1 \ bin \ Debug
... \ Test1 \ bin \ Debug
... \ Test1 \ bin \ Debug
测试2:
... \ Test2 \ bin \ Debug
... \ Test2 \ bin \ Debug
... \ Test2 \ bin \ Debug
在...
中,我替换了在这种情况下相同且不重要的整个路径。
因此,每个测试都已经在其自己的程序集中运行,至少对于我而言,这不足为奇。
这是奇怪的部分-如果我使用全部运行按钮运行这些测试,结果如下:
测试1:
... \ Test1 \ bin \ Debug
... \ Test1 \ bin \ Debug
... \ Test1 \ bin \ Debug
测试2:
... \ Test2 \ bin \ Debug
... \ Test1 \ bin \ Debug
... \ Test2 \ bin \ Debug
请注意,第二个条目对他们两个都是相同的。我的问题是-使用全部运行选项运行时,即使测试位于不同的程序集中,为什么Path.GetDirectoryName(Assembly.GetExecutingAssembly().FullName)
返回相同的路径?