2011-02-13 3 views
1

.Net 4.0, VS 2010 및 Spring 1.3을 사용하는 프로젝트가 있습니다. 각 통합 테스트가 실행되기 전후에 테스트 용 데이터를 설정하고 정리할 수 있기를 원합니다. 나는 이것을하기 위해 커스텀 속성을 사용하려고 생각했다.Spring.Net을 사용하여 테스트 클래스를 만드는 Microsoft 테스트 프레임 워크 얻기

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

이렇게하려면, 나는 사용자 정의 속성과 방법 주위에 인터셉터를 만든

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

기본적으로, 문제는 지금 만들 스프링 사용하는 마이크로 소프트의 테스트 프레임 워크를 얻는 방법이다 " UnitTest1 "클래스를 생성 할 수 있습니다. 예를 들어, 적절한 구성으로 무작위 콘솔 앱을 사용하면 다음과 같이 할 수 있습니다.

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

괜찮습니다. 그러나 Visual Studio를 사용하여 직접 테스트를 실행하고 "솔루션의 모든 테스트 실행"을 클릭하면 인터셉터를 호출하지 않고 이전 및 이후 코드를 실행하지 않고 테스트 메서드로 바로 이동합니다.

클래스 AbstractDependencyInjectionSpringContextTests

public class UnitTest1 : AbstractDependencyInjectionSpringContextTests 

그러나 아무도에서

[TestClass] 
[ClassInstance] 
public class UnitTest1 
{ 

또는 상속에 해당하는 속성

<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> 

아래와 같이 나는 설정에 AttributeAutoProxyCreator를 사용하여 시도했다

이러한 것들이 효과가있는 것 같습니다. 내 메서드 인터셉터가 호출되지 않습니다. 그렇다면 Visual Studio에서 Microsoft 테스트 프레임 워크를 사용하여 스프링 컨텍스트를 사용하여 테스트 클래스를 만드는 방법은 무엇입니까? 또는, Spring에게 이러한 테스트 클래스의 구체적인 구성을 가로 채서 대신 Proxy 클래스를 삽입하십시오.

도움을 미리 감사드립니다. 여기에 설명 된대로, 내 자신의 솔루션을 찾을 수

+0

저는이 목적으로 [TestInitialize]와 [TestCleanup] 속성을 사용할 수 있다고 생각합니다. [msdn] (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.testinitializeattribute (v = VS.100) .aspx)의 설명서를 참조하십시오. 왜 그걸 사용하지 않는지 설명해 주시겠습니까? – Marijn

+0

동일한 메소드를 실행하고 인수를 사용하지 않기 때문에. 각 방법 전에 다른 SQL 스크립트를 실행하고 싶습니다. 각 방법은 예상 한 데이터를 설정하고 정리합니다. – Chaitanya

+0

확인. 이 질문은 관련이있는 것처럼 보입니다. [mstest와 함께 사용하는] [http://stackoverflow.com/questions/4269142/mstest-testmethod-dependency-injection]. mstest가 테스트 인스턴스를 생성하는 방법을 쉽게 파악할 수있는 방법이 없다. – Marijn

답변

관련 문제