【问题标题】:Visual Studio Test Project Start Up Event?Visual Studio 测试项目启动事件?
【发布时间】:2013-09-22 09:40:09
【问题描述】:

我的项目都使用 StructureMap 作为容器/IoC。我在存储库模式等方面利用了这一点。在我的单元测试项目中,我已经实现了有意义的测试存储库。为了让结构映射知道要使用什么具体实现,我需要初始化容器并运行类型注册。我正在寻找一个在单元测试项目中调用我的 IoC.Initialize() 的地方。在单元测试之外,例如,在 Web 项目中,我可以从 Global.asax 初始化我的 IoC 容器/注册。我正在寻找与 Global.asax 等效的单元测试(例如 static void main,一种连接到单元测试的主启动事件入口点的方法)。我通过对所有测试使用基类并在其中进行初始化来解决此问题,因此,如果 IoC 容器尚未初始化,则运行的任何测试最终都会初始化 IoC 容器……但恕我直言,这是非常骇人听闻的,所以我正在寻找一种更清洁的方式。

有什么建议吗?

更新/回答

以下是我根据 Matthew 的回复实施的解决方案。

<TestClass()>
Public Module Main

    Public Property TestContext As TestContext

    <AssemblyInitialize()>
    Public Sub Initialize(_TestContext As TestContext)

        TestContext = _TestContext
        IoC.Initialize()

    End Sub

End Module

【问题讨论】:

    标签: c# .net vb.net unit-testing


    【解决方案1】:

    您可能正在寻找AssemblyInitializeAttribute。您可以在程序集中的一个类中用 this 装饰一个方法,它会在该程序集中的任何测试运行之前运行一次。

    【讨论】:

    • 完美。为了让遇到这个问题的人更清楚,我在上面的问题中添加了我对答案的具体实现的更新(例如,带有该装饰器的方法需要一个特定的签名,并且它所在的类/模块需要用测试类属性)。谢谢马修!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2013-12-27
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多