• 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文件夹中,使得测试用例读写外部文件成为可能。

  • 相关阅读:
    Objective-C学习笔记2013(Category 扩展(类目)/分类)(4)
    Objective-C学习笔记(static,self,super)
    Objective-C学习笔记2013(3)[NSArray]数组[在可变数组中,加用add减用remove]
    Objective-C学习笔记2013(2)[NSNumber]
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    C语言学期总结
    第一次作业
  • 原文地址:https://www.cnblogs.com/wayfarer/p/666844.html
Copyright © 2020-2023  润新知