我可以使用 Spring.NET 的基类(例如 AbstractDependencyInjectionSpringContextTests)来加载应用程序上下文并使用 MSTest 执行依赖项注入吗?
我正在尝试开发最终将命中实时集成数据库并回滚的事务场景。我有一组从 Spring 扩展而来的基类,它们在我们的应用程序平台上执行一些必要的初始化。
我想我可以抽象它并使用 Before 和 After 钩子,但我想尽可能地保持它与我们已有的相似,并继续使用自动装配的依赖注入。
我可以使用 Spring.NET 的基类(例如 AbstractDependencyInjectionSpringContextTests)来加载应用程序上下文并使用 MSTest 执行依赖项注入吗?
我正在尝试开发最终将命中实时集成数据库并回滚的事务场景。我有一组从 Spring 扩展而来的基类,它们在我们的应用程序平台上执行一些必要的初始化。
我想我可以抽象它并使用 Before 和 After 钩子,但我想尽可能地保持它与我们已有的相似,并继续使用自动装配的依赖注入。
我建议你看看 SpecFlow 的ContextInjection-feature。这是一个简单但相当强大的功能,允许您将对象直接注入到您的步骤定义类中。
例如,您可以按照您想要的方式配置您的事务组件,然后将配置的对象直接注入您的步骤中。可以这么说,创建一个“仅在测试中使用”版本。
对于交易,我之前使用过 Before/AfterScenario 挂钩,但正如您所说,这有点隐藏。它工作正常。
希望这可以帮助
我能够扩展 Spring 测试基类并使用 Specflows Before/After 场景连接测试初始化/清理。至少,我的 step 类将自动连接必要的依赖项。
https://github.com/techtalk/SpecFlow/wiki/Hooks
[Binding]
public class MySteps : AbstractDependencyInjectionSpringContextTests
{
protected override string[] ConfigLocations
{
get
{
return new string[] {
"assembly://My.Assembly/Path.To.Config/My.config" };
}
}
public IMyService MyService { get; set; }
[Before]
public void BeforeTest()
{
this.TestInitialize();
}
[After]
public void AfterTest()
{
this.TestCleanup();
}
}