【问题标题】:C# UnitTest Share single instance of an object across Unit TestsC# UnitTest 跨单元测试共享对象的单个实例
【发布时间】:2011-04-18 15:12:50
【问题描述】:

我正在尝试在 UnitTests 中编写一些 TestMethods,它们都共享一个公共静态资源的单个实例。

在我的单元测试的构造函数中,我实例化了另一个 C# 项目中的公共静态。然后我所有的测试都访问这个公共静态。

但是,在该 UnitTest 类中,似乎为每个 TestMethod 实例化了一个新的 Test Class 实例。

有没有办法让这些测试共享同一个公共静态实例?

或者我应该使用其他技术来测试服务吗?

** 更新 **

好吧,看来我使用了错误的方法来实现我想要实现的目标。

我已经部署了 UnitTest,它们正在独立地进行测试,并且没有任何共享资源,并且可以按预期工作。

我想要实现的是一种测试与服务的并发连接的方法,该服务将通过 Web 服务/HTTP 接口或通过 TcpListener 的直接连接公开以传递序列化字节 []。

每个连接的客户端都通过服务相互交互。

这些测试仅用于在低于公开网络接口的级别测试虚拟客户端的可靠性和互操作性。

服务已被封装到一些公共静态对象中,这些对象公开的功能与将通过网络接口公开的功能相同。

我需要一种方法来创建将连接到这些对象并根据响应断言不同结果的虚拟客户端。

【问题讨论】:

  • 你使用的是什么测试运行器?
  • “我实例化一个公共静态”是什么意思?一个公静什么的?请提供代码示例。

标签: c# unit-testing


【解决方案1】:

一般来说,您不希望单元测试共享任何状态,这样发生错误的可能性就会降低。您应该为每个测试设置预期的开始状态,以消除这些失败的问题。

因此,例如,如果您需要一个共享静态 SomethingOrOther,则为每个单元测试创​​建一个处于正确状态的新静态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多