gpt4 book ai didi

testing - 让微软测试框架使用 Spring.Net 创建测试类

转载 作者:行者123 更新时间:2023-11-28 20:58:03 24 4
gpt4 key购买 nike

我有一个使用 .Net 4.0、VS 2010 和 Spring 1.3 的项目。在我的每个集成测试运行之前和之后,我希望能够为测试设置和清理一些数据。我正在考虑使用自定义属性来执行此操作。

[TestClass]
public class UnitTest1
{
[TestMethod]
[PreTestSqlExecute(SqlScript="SetUpDataForMethod1.sql")]
public virtual void TestMethod1()
{
.

为此,我创建了自定义属性和 Around 方法拦截器

public class PreTestSqlExecuteAdvice : IMethodInterceptor
{
public object Invoke(IMethodInvocation invocation)
{
.

基本上,现在的问题是如何让微软的测试框架使用Spring来创建“UnitTest1”类,而不是直接创建一个具体的类。例如,我可以使用具有适当配置的虚拟控制台应用程序来执行类似这样的操作

    static void Main(string[] args)
{
IApplicationContext ctx = ContextRegistry.GetContext();
var ut = (UnitTest1)ctx["mySqlTest"];
ut.TestMethod1();

这很好用。但是当我直接使用 visual studio 运行测试并单击“在解决方案中运行所有测试”时,它不会调用拦截器并执行前后代码,只是直接进入测试方法。

我尝试在配置中使用 AttributeAutoProxyCreator,如下所示

<object type="Spring.Aop.Framework.AutoProxy.AttributeAutoProxyCreator, Spring.Aop">
<property name="AttributeTypes" value="SpringTests.ClassInstanceAttribute"/>
<!-- Interceptor names can be either of the type IAdvice, IAdvisor, or IAdvisors -->
<property name="InterceptorNames" value="aroundAdvisor"/>
</object>

在类上有适当的属性

[TestClass]
[ClassInstance]
public class UnitTest1
{

或者继承自AbstractDependencyInjectionSpringContextTests

public class UnitTest1 : AbstractDependencyInjectionSpringContextTests

但这些似乎都不起作用。我的方法拦截器没有被调用。那么我如何让 Visual Studio 中的 Microsoft 测试框架使用 spring 上下文来创建测试类。或者,让 Spring 拦截这些测试类的具体构造并改为注入(inject) Proxy 类。

在此先感谢您的帮助。

最佳答案

找到我自己的解决方案,详见此处 - http://www.chaitanyaonline.net/2011/09/25/improving-integration-tests-in-net-by-using-attributes-to-execute-sql-scripts/

基本上我从“ContextBoundObjects”继承了我的单元测试,这让我可以注入(inject)我自己的代码并做类似 AOP 的事情。我创建了自己的自定义属性,以便可以运行预处理和后处理 Sql 脚本。

关于testing - 让微软测试框架使用 Spring.Net 创建测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com