C((zhi)の中のSpring Test
15490 ワード
C〓〓の中でもSpringを使うことができます.ここでは主にSpringを使ってセルテストを行う方法を記録しています.
まず、開発ツールはvs 2012です.nugetを使って必要なパッケージを取得します.mavenのようです.
その後、spring開発バッグが必要です.nugtで管理できます.なかったら自分で探してみます.
Spring.Aopがあるはずです.
Spring.ore
Spring.Data
Spring.Testings.Microsoft
次は私達のテストの抽象類です.
ここに配置ファイルを貼ってきます.javaのspringと似ています.
これは配置ファイルです.実際の仕事で使うものです.少し修正します.私たちはたくさん見ています.SpringのAOPを使っています.AOPはあまり好きではないですが、ここで使うのは無理だと思います.
次はテストクラスです.ここで注入します.注解を使ってはいけません.もちろんC〓〓の中の注釈はまた別の形です.
コードを直接見るか
まず、開発ツールはvs 2012です.nugetを使って必要なパッケージを取得します.mavenのようです.
その後、spring開発バッグが必要です.nugtで管理できます.なかったら自分で探してみます.
Spring.Aopがあるはずです.
Spring.ore
Spring.Data
Spring.Testings.Microsoft
次は私達のテストの抽象類です.
namespace MyApp.Core.Test
{
public abstract class AbstractSpringTestCase : AbstractDependencyInjectionSpringContextTests
{
public AbstractSpringTestCase()
{
// switch on field level injection
PopulateProtectedVariables = true;
}
protected override string[] ConfigLocations
{
get
{
return new string[] { "assembly://MyApp/AppCore/AppContext.xml"
,"assembly://MyApp/AppTran/AppContext.xml"
};
}
}
}
}
ここではAbstract DependencyInjection SpringContect Testsクラスを継承しています.私たちのクラスは主にプロファイルを読み込むことです.ここに配置ファイルを貼ってきます.javaのspringと似ています.
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:nms="http://www.springframework.net/nms" default-lazy-init="true" >
<!-- =========================================================================== -->
<!-- App manager -->
<!-- =========================================================================== -->
<object id="appManager" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="appManagerTarget" type="MyApp.Collector.DefaultAppManager, MyApp" init-method="Init" destroy-method="Cleanup">
<property name="appFactory" ref="appFactory" />
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<object id="appFactory" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="appFactoryTarget" type="MyApp.Collector.DefaultAppFactory, MyApp" >
<property name="forwarderFactory" ref="forwarderFactory" />
<property name="winAppFactory" ref="winAppFactory" />
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<object id="winCollectorFactory" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="winAppFactoryTarget" type="MyApp.Collector.Windows.WinAppFactory, MyApp">
<property name="eventHostManager" ref="eventHostManager" />
<lookup-method name="CreateWinMockApp" object="winMockApp"/>
<lookup-method name="CreateCmdApp" object="cmdApp"/>
<lookup-method name="CreateGUIApp" object="GUIApp"/>
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<object id="winEventReaderFactory" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="winEventReaderFactoryTarget" type="MyApp.Collector.Windows.WinEventReaderFactory, MyApp">
<property name="eventHostManager" ref="eventHostManager" />
<lookup-method name="CreateWinMockEventReader" object="winMockEventReader"/>
<lookup-method name="CreateCmdEventReader" object="cmdEventReader"/>
<lookup-method name="CreateGUIEventReader" object="GUIEventReader"/>
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<!-- =========================================================================== -->
<!-- EventHost -->
<!-- =========================================================================== -->
<object id="eventHostFactory" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="eventHostFactoryTarget" type="MyApp.Collector.Windows.Host.DefaultEventHostFactory, MyApp" >
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<object id="eventHostManager" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="eventHostManagerTarget" type="MyApp.Collector.Windows.Host.DefaultEventHostManager, MyApp" >
<property name="eventHostFactory" ref="eventHostFactory" />
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<!-- =========================================================================== -->
<!-- forwarder factory -->
<!-- =========================================================================== -->
<object id="forwarderFactory" type="Spring.Aop.Framework.ProxyFactoryObject">
<property name="target">
<object name="forwarderFactoryTarget" type="MyApp.Forwarder.DefaultForwarderFactory, MyApp" >
<property name="connectionFactory" ref="connectionFactory" />
<property name="sendEventMeter" ref="sendEventMeter" />
</object>
</property>
<property name="interceptorNames">
<list>
<value>loggingAdvice</value>
</list>
</property>
</object>
<!-- =========================================================================== -->
<!-- Meter factory -->
<!-- =========================================================================== -->
<object name="receiveEventMeter" type="MyApp.Meter.DefaultEventMeter, MyApp" init-method="Init" >
<property name="categoryName" value="MyAPP Receiver" />
</object>
<object name="sendEventMeter" type="MyApp.Meter.DefaultEventMeter, MyApp" init-method="Init" >
<property name="categoryName" value="MyAPP Sender" />
</object>
<!-- =========================================================================== -->
<!-- prototype aop is configure differently -->
<!-- =========================================================================== -->
<object type="Spring.Aop.Framework.AutoProxy.DefaultAdvisorAutoProxyCreator">
<property name="interceptorNames" value="loggingAdvicePrototype"/>
</object>
<object id="winMockApp" type="MyApp.Collector.Windows.Mock.WinMockApp, MyApp" singleton="false">
<property name="winEventReaderFactory" ref="winEventReaderFactory"/>
<property name="eventHostManager" ref="eventHostManager"/>
</object>
<object id="winMockEventReader" type="MyApp.Collector.Windows.Mock.WinMockEventReader, MyApp" singleton="false">
<property name="receiveEventMeter" ref="receiveEventMeter"/>
</object>
<object id="GUIApp" type="MyApp.Collector.Windows.GUI.GUIApp, MyApp" singleton="false">
<property name="winEventReaderFactory" ref="winEventReaderFactory"/>
<property name="eventHostManager" ref="eventHostManager"/>
</object>
<object id="GUIEventReader" type="MyApp.Collector.Windows.GUI.GUIEventReader, MyApp" singleton="false">
<property name="receiveEventMeter" ref="receiveEventMeter"/>
<property name="remoteEventProviderResources" ref="remoteEventProviderResources"/>
</object>
<object id="vistaFamilyCollector" type="MyApp.Collector.Windows.Cmd.CmdApp, MyApp" singleton="false">
<property name="winEventReaderFactory" ref="winEventReaderFactory"/>
<property name="eventHostManager" ref="eventHostManager"/>
</object>
<object id="vistaFamilyEventReader" type="MyApp.Collector.Windows.Cmdd.CmdEventReader, MyApp" singleton="false">
<property name="receiveEventMeter" ref="receiveEventMeter"/>
</object>
<object id="remoteEventProviderResources" type="MyApp.Collector.Windows.GUI.DefaultRemoteEventProviderResources, MyApp">
</object>
<object id="impersonateUserFactory" type="MyApp.Collector.Windows.GUI.DefaultImpersonateUserFactory, MyApp">
</object>
<!-- =========================================================================== -->
<!-- Logging -->
<!-- =========================================================================== -->
<object name="loggingAdvice" type="Spring.Aspects.Logging.SimpleLoggingAdvice, Spring.Aop" >
<property name="LogUniqueIdentifier" value="true"/>
<property name="LogExecutionTime" value="true"/>
<property name="LogMethodArguments" value="true"/>
<property name="LogReturnValue" value="true"/>
<property name="Separator" value=";"/>
<property name="LogLevel" value="Info"/>
<property name="HideProxyTypeNames" value="true"/>
<property name="UseDynamicLogger" value="true"/>
</object>
<object name="loggingAdvicePrototype" type="Spring.Aspects.Logging.SimpleLoggingAdvice, Spring.Aop" singleton="false">
<property name="LogUniqueIdentifier" value="true"/>
<property name="LogExecutionTime" value="true"/>
<property name="LogMethodArguments" value="true"/>
<property name="LogReturnValue" value="true"/>
<property name="Separator" value=";"/>
<property name="LogLevel" value="Info"/>
<property name="HideProxyTypeNames" value="true"/>
<property name="UseDynamicLogger" value="true"/>
</object>
<object type="Spring.Objects.Factory.Attributes.RequiredAttributeObjectPostProcessor, Spring.Core"/>
<!-- =========================================================================== -->
<!-- JMS -->
<!-- =========================================================================== -->
<object id="connectionFactory" type="Apache.NMS.ActiveMQ.ConnectionFactory, Apache.NMS.ActiveMQ">
<constructor-arg index="0" value="failover:(tcp://localhost:${BROKER_PORT})"/>
</object>
<!-- =========================================================================== -->
<!-- Configuration -->
<!-- =========================================================================== -->
<object name="propertyPlaceHolderConfigurer" type="Spring.Objects.Factory.Config.PropertyPlaceHolderConfigurer, Spring.Core">
<property name="EnvironmentVariableMode" value="Override"/>
<property name="Properties">
<name-values>
<add key="BROKER_PORT" value="61616"/>
</name-values>
</property>
</object>
</objects>
これは配置ファイルです.実際の仕事で使うものです.少し修正します.私たちはたくさん見ています.SpringのAOPを使っています.AOPはあまり好きではないですが、ここで使うのは無理だと思います.
次はテストクラスです.ここで注入します.注解を使ってはいけません.もちろんC〓〓の中の注釈はまた別の形です.
コードを直接見るか
namespace MyApp.Core.Test
{
[TestClass]
public class WinMockAppTest : AbstractSpringTestCase
{
protected IAppManager appManager;
[TestMethod]
public void testWinMockApp()
{
//do the test
//such as
Assert.IsNotNull(appManager);
}
}
}
TestClassとTestMethodは十分です.