在单元测试期间利用资源

内存泄漏

我是VS2010和C#单元测试的新手。我正在尝试加载应进行测试的文件。有没有像专家一样的方法?或最佳做法是什么?

我应该如何存储和加载测试资源?

我的方法是在测试项目中创建一个新文件夹,例如

+MyTestProject
+-Properties
+-....
+-Resources
 +- MyFile.xml
 +- OtherFile.xls
 +-...
+...

//编辑:

我正在尝试针对生成的内容测试我的代码,因此我希望将这种内容按原样加载到我的单元测试框架中[ClassInitialize()],并为每个单元测试传递它们[TestInitialize()]所以我真的很想在磁盘上加载文件。模拟也是一个很好的提示,但是对于这种情况,我更喜欢采用其他方式。

安迪·霍珀(Andy Hopper)

您可以使用两种方法。一种是将文件作为嵌入式资源进行部署,并在测试运行时以fixture /测试类初始化方法提取它们。这种方法非常可靠(即在测试程序集的运行位置无关紧要),但稍微复杂一些(您需要将文件标记为嵌入式资源,需要了解嵌入文件时使用的命名约定-基于资源的程序集,您需要熟悉Assembly.GetManifestResourceStream()。

或者,您可以使用“松散文件”(即,未嵌入)。使用这种方法,您只需将文件标记为“始终复制”或“如果更新则复制”-这将导致文件复制到测试程序集的生成输出目录中。如果您使用的是NUnit,则可以在那里停止。如果您使用的是MSTest(Visual Studio附带的工具),则需要向您的测试类或方法添加[DeploymentItem]属性:

  [DeploymentItem("MyFile.xml"[, "someoptionalsubfolder"])]
  public void MyTest()
  {
      ...
  }

在上述两种情况下,我建议您对资源采用文件夹结构/命名约定,以帮助您跟踪它们。像下面这样的东西对我来说效果很好。它源于ASP.NET MVC使用和运行良好的文件夹结构。在这种方法中,您可以拥有“共享的”资源(即,对于程序集或测试类级别的一组测试来说是恒定的),但是每组测试甚至每项测试都可以具有自己的特定资源版本(例如,用于测试“无效数据”响应或测试边缘情况):

  +-Resources
    +-Shared
      - SomeGlobalResource.xml
    +-TestClass1
      +-Shared
        - MockData.xml
      +-TestCase1
        - SpecialVersionofMockData.xml
      +-TestCase2
        - MockDataMissingRequiredInformation.xml
      +-TestCase3
        - EtCetera.xml
      +-...
    +-TestClass2
      +-Shared
      +-TestCase1
      +-TestCase2
      +-...
    +-TestClass3
    ...

顺便说一句,如果您采用这种方法,则可以大大简化如何使用MSTest下的DeploymentItem属性。您可以简单地在类中放置一个指令来复制整个Resource文件夹树,而不必疯狂地维护每个资源文件的属性,而只需:

  [DeploymentItem("Resources\\", "Resources")]
  [TestClass]
  public class MyTestClass()
  {
      ...
  }

编辑:我应该指出,您仍然需要管理测试内容的路径-NUnit和MSTest都不提供基于当前正在执行的测试自动生成路径的工具。这意味着您在复制粘贴任何测试代码时必须保持正确的路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DateFormat ParseException仅在单元测试期间

来自分类Dev

单元测试期间的Python日志捕获

来自分类Dev

在单元测试期间安装Flask app.config

来自分类Dev

Spring单元测试期间无法加载ApplicationContext

来自分类Dev

是否可以在单元测试期间禁用Spring的@Async?

来自分类Dev

在Django单元测试期间需要运行celery worker

来自分类Dev

单元测试期间如何更新React Component道具?

来自分类Dev

单元测试期间的Python日志捕获

来自分类Dev

SocketException:套接字已关闭。在单元测试期间

来自分类Dev

在单元测试期间禁用 python 日志记录

来自分类Dev

单元测试期间 SNMP 代理断开连接

来自分类Dev

你如何在单元测试期间模拟 LUIS?

来自分类Dev

Thymeleaf:在单元测试期间不渲染?

来自分类Dev

Flask应用程序的单元测试期间无法创建测试客户端

来自分类Dev

应用测试期间如何访问资源

来自分类Dev

Python:如何在单元测试期间覆盖复杂的函数?

来自分类Dev

使用SQLAlchemy进行单元测试期间防止接触db

来自分类Dev

$ scope。$ on在单元测试期间未在控制器中定义

来自分类Dev

单元测试期间Xcode CI机器人错误(意外的TestSuiteWillFinish)

来自分类Dev

android.util.Patterns.EMAIL在单元测试期间返回null

来自分类Dev

Laravel CSRF验证在单元测试期间失败(Laravel 4.1)

来自分类Dev

检查在执行单元测试期间是否连接了调试器

来自分类Dev

防止Spring在单元测试期间实例化某些bean

来自分类Dev

如何在单元测试期间让django进行身份验证

来自分类Dev

如何设置django在单元测试期间不使用内存数据库?

来自分类Dev

在单元测试期间如何跳过Fluent验证静态功能?

来自分类Dev

如何在单元测试期间禁用Morgan(请求记录器)?

来自分类Dev

模拟请求时,单元测试期间未保存数据库条目

来自分类Dev

为什么在akka-stream的单元测试期间出现此超时?

Related 相关文章

  1. 1

    DateFormat ParseException仅在单元测试期间

  2. 2

    单元测试期间的Python日志捕获

  3. 3

    在单元测试期间安装Flask app.config

  4. 4

    Spring单元测试期间无法加载ApplicationContext

  5. 5

    是否可以在单元测试期间禁用Spring的@Async?

  6. 6

    在Django单元测试期间需要运行celery worker

  7. 7

    单元测试期间如何更新React Component道具?

  8. 8

    单元测试期间的Python日志捕获

  9. 9

    SocketException:套接字已关闭。在单元测试期间

  10. 10

    在单元测试期间禁用 python 日志记录

  11. 11

    单元测试期间 SNMP 代理断开连接

  12. 12

    你如何在单元测试期间模拟 LUIS?

  13. 13

    Thymeleaf:在单元测试期间不渲染?

  14. 14

    Flask应用程序的单元测试期间无法创建测试客户端

  15. 15

    应用测试期间如何访问资源

  16. 16

    Python:如何在单元测试期间覆盖复杂的函数?

  17. 17

    使用SQLAlchemy进行单元测试期间防止接触db

  18. 18

    $ scope。$ on在单元测试期间未在控制器中定义

  19. 19

    单元测试期间Xcode CI机器人错误(意外的TestSuiteWillFinish)

  20. 20

    android.util.Patterns.EMAIL在单元测试期间返回null

  21. 21

    Laravel CSRF验证在单元测试期间失败(Laravel 4.1)

  22. 22

    检查在执行单元测试期间是否连接了调试器

  23. 23

    防止Spring在单元测试期间实例化某些bean

  24. 24

    如何在单元测试期间让django进行身份验证

  25. 25

    如何设置django在单元测试期间不使用内存数据库?

  26. 26

    在单元测试期间如何跳过Fluent验证静态功能?

  27. 27

    如何在单元测试期间禁用Morgan(请求记录器)?

  28. 28

    模拟请求时,单元测试期间未保存数据库条目

  29. 29

    为什么在akka-stream的单元测试期间出现此超时?

热门标签

归档