MSTest:使用TestContext编写单元测试

问题描述:

我正在编写一些创建文件的单元测试。MSTest:使用TestContext编写单元测试

此刻我正在使用TestContextTestResultsDirectory存储创建的文件(结果为断言)。语法是这样的:

 //Create directory 
     Directory.CreateDirectory(TestContext.TestResultsDirectory); 

     //Create file. 
     File.Create(TestContext.TestResultsDirectory + @"\Test.txt"); 

我的问题主要是,为什么不创建TestResultsDirectory

当我刚打电话File.Create,测试失败DirectoryNotFoundException

这是使用TestContext的正确方法,还是有任何属性,如我们可以在方法级别设置的[SetPath],以便运行时将创建“测试相关”路径?

+0

从技术上讲,您并未创建'单元测试',因为单元测试是独立运行的,并且不与外部资源(如数据库,系统时钟和文件系统)通信。 – Steven 2010-12-14 14:10:09

+0

概念上是的,你是对的。测试是更新一个文本文件,并确保它包含正确的文本。为了审计目的,我们必须确保“更改”存储在文件中。由于测试上下文是由运行时生成的,测试可以由任何开发人员运行(这是选择测试上下文的关键)。有点困惑为什么测试环境只有指向不存在的目录的指针。 – msuhash 2010-12-14 14:18:25

+0

你在哪里搜索创建的目录?你有没有尝试System.Console.WriteLine(Path.GetFullPath(Path.Combine(TestContext.TestResultsDirectory,“Test.txt”)))? – k3b 2010-12-14 14:56:04

我从不使用TestContext。在这种情况下,我会用Environment.CurrentDirectory代替:

//Create directory 
    Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "SubDirectory")); 

    //Create file. 
    File.Create(Path.Combine(Environment.CurrentDirectory, "Test.txt")); 
+0

我刚刚清理了一些使用相同模式(当前目录)的测试用例,并最终在根文件夹中创建了文件夹。我正在使用Visual Studio 2010。 – vboctor 2011-10-19 17:38:04

你可能想使用TestContext.ResultsDirectory代替。这似乎指向实际获得创建的目录。

TestContext.TestResultsDirectory没有被创建(它在路径中有GUID文件夹),这就是为什么你得到DirectoryNotFoundException

我知道这是一个古老的线程,但我现在只是自己了解这些东西,而我只是在玩Visual Studio自动测试时偶然发现了关于TestResultsDirectory文件夹的问题的答案。也许它会帮助别人。

TestResultsDirectory是创造,只是期间测试不。 (@Kevin,名称的GUID与是否可以创建文件夹无关,如果这就是你所暗示的。)我在测试运行时遵循文件和文件夹的创建,并且文件夹是在用户代码退出后才能创建,直到

当运行使得画面的视频被捕获的测试(ScreenCapture.wmv)或行为日志创建(UITestActionLog.html),导致文件被放置在TestResultsDirectory已经创建,这是不是你的代码完成后,直到后。如果您的测试不会创建这些或类似的结果文件,则很可能不会创建此文件夹。

正如我所说,我仍然在学习Visual Studio测试。

更新:我发现在录制视频或动作日志时,他们似乎将存储在内存中,直到测试结束。这似乎是在用户代码退出后创建输出文件夹的原因。

如果我找到更多关于这个主题的信息(如果网站允许我 - 你能不止一次编辑答案?),我会更新这个答案。