即使MSTests位于不同的程序集中,它们是否也作为单个程序集执行?

时间:2019-02-22 16:52:46

标签: c# .net visual-studio .net-assembly mstest

我注意到

返回的路径之间存在差异
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)返回相同的路径?

0 个答案:

没有答案