У меня есть проект, использующий .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)
{
.
По сути, теперь проблема заключается в том, как заставить среду тестирования в Microsoft использовать 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
Но ни один из них, кажется, не работает.Мой метод перехватчик не вызывается.Итак, как мне заставить тестовую среду Microsoft в Visual Studio использовать либо Spring-контекст для создания тестовых классов.Или, альтернативно, заставить Spring перехватывать конкретные конструкции этих тестовых классов и вместо этого вводить класс Proxy.
Заранее спасибо за помощь.