zoukankan      html  css  js  c++  java
  • Visual Studio 2005单元测试中关于外部文件的问题解决

    在Visual Studio 2005中撰写单元测试的测试用例,比之使用NUnit具有一定的优势,除了本身集成在IDE中之外,对于测试用例的调试也更加方便。在运行测试用例时,Visual Studio 2005有一个显著的特点,就是它会为测试结果单独建立一个TestResults文件夹。然后,每运行一次测试用例,都会创建包含了时间戳的文件夹,在Out文件夹中得到测试的结果。其中,还包含了测试项目以及它所引用的项目的程序集文件。

    这带来一个问题。如果我们运行一个应用程序,当程序需要读写外部文件时,我们可以将其放入到编译运行时的debug目录下。在运行时,系统默认的当前目录就是debug目录。我们可以直接给出文件的名字,来访问相关文件。例如:
    File.Open("test.txt", FileMode.Open);

    现在,运行测试用例的当前目录是动态创建的,我们无法在代码中指定当前目录,以获得外部文件的完整路径。例如我们要测试的类对象,包含了设置读写文件的路径,如下:
    [TestMethod]
    public void TestReadAndWrite()
    {
        TextFileOp op = new TextFileOp();
        op.SourceFile = "source.txt";
        op.TargetFile = "target.txt";
        op.Handle();
    }

    文件source.txt和target.txt应该放在何处呢?

    方法是我们可以将这些外部文件统一放到Solution的一个文件夹,例如Files中。然后,我们打开Solution下的localtestrun.testrunconfig文件。此时会弹出如下图的对话框:

    unittest.GIF

    在左侧选择Deployment,单击Add Directory按钮,找到Files目录,并添加。如此以来,我们就可以利用如下方式编写单元测试代码:
    [TestMethod]
    public void TestReadAndWrite()
    {
        string filePath = Directory.GetCurrentDirectory() + "\\";
        TextFileOp op = new TextFileOp();
        op.SourceFile = filePath + "source.txt";
        op.TargetFile = filePath + "target.txt";
        op.Handle();
    }

    Directory.GetCurrentDirectory()方法获得的当前目录就是随机创建的目录下的out文件夹。由于在localtestrun.testrunconfig文件中配置了Deployment的目录,在运行测试用例时,系统会自动将Files文件夹下的所有文件复制到out文件夹中,使得测试用例读写外部文件成为可能。

  • 相关阅读:
    [LeetCode] 52. N-Queens II N皇后问题之二
    [LeetCode] 51. N-Queens N皇后问题
    [LeetCode] 53. Maximum Subarray 最大子数组
    [LeetCode] 45. Jump Game II 跳跃游戏之二
    [LeetCode] 55. Jump Game 跳跃游戏
    [LeetCode] 56. Merge Intervals 合并区间
    [LeetCode] 57. Insert Interval 插入区间
    Android中渐变图片失真的解决方案
    Android compress 压缩 会不会失真
    Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
  • 原文地址:https://www.cnblogs.com/wayfarer/p/666844.html
Copyright © 2011-2022 走看看