Spring統合junit実装ユニットテスト
2657 ワード
IoCコンテナ内のオブジェクトにアクセスして機能テストを行う場合、単純にjunitを使用してユニットテストを行う場合、私たちは一般的にこのようにすることができます.
あるいはもっと良い方法:
しかし、IoCコンテナを手動で作成したり、オブジェクトを取得したりすることは避けられません.私たちがもっと望んでいるのは、この2つのステップを外して、
まず、Mavenプロジェクトを作成し、pom.xmlにjunitのjarパッケージ依存を追加し、Springにjunitのjarパッケージ依存を統合します.
Springがjunitを統合する場合、junitのバージョンは
次に、ユニットテストクラスを作成します.
ここまでの統合作業は完了しましたが、簡単です.IoCコンテナの作成やオブジェクトの取得を考慮することなく、どのIoCコンテナのプロファイルをロードするかに関心を持つだけで、
public class AccountServiceTest {
@Test
public void transfer() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
AccountService accountService = (AccountService) context.getBean("accountService");
accountService.transfer(1, 2, 100);
}
}
あるいはもっと良い方法:
public class AccountServiceTest {
private AccountService accountService;
@Before
public void init(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
accountService = (AccountService) context.getBean("accountService");
}
@Test
public void transfer() {
accountService.transfer(1, 2, 100);
}
しかし、IoCコンテナを手動で作成したり、オブジェクトを取得したりすることは避けられません.私たちがもっと望んでいるのは、この2つのステップを外して、
@Autowired
でオブジェクトの自動アセンブリを完了して、ステップを簡素化して、機能のテストに重心を置くことができます.これは、次に理解するSpring統合junit実装ユニットのテストです.まず、Mavenプロジェクトを作成し、pom.xmlにjunitのjarパッケージ依存を追加し、Springにjunitのjarパッケージ依存を統合します.
junit
junit
4.12
test
org.springframework
spring-test
4.3.23.RELEASE
test
Springがjunitを統合する場合、junitのバージョンは
4.12
以上を使用することが望ましい.そうしないと、次のような異常が発生する可能性がある.java.lang.ExceptionInInitializerError
......
......
Caused by: java.lang.IllegalStateException: SpringJUnit4ClassRunner requires JUnit 4.12 or higher
......
......
次に、ユニットテストクラスを作成します.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BeanConfig.class})
public class AccountServiceTest {
@Autowired
private AccountService accountService;
@Test
public void transfer() {
accountService.transfer(1, 2, 100);
}
}
@RunWith(SpringJUnit4ClassRunner.class)
は固定構成であり、junitが提供するmainメソッドをSpringが提供するmainメソッドに置き換える役割を果たす.@ContextConfiguration(classes = {BeanConfig.class})
はSpring IoCコンテナを作成するためのプロファイルをロードします.ここでロードするのは注釈ベースの構成Javaプロファイルです.もちろんxmlプロファイルもロードできます.たとえば、@ContextConfiguration(locations = {"classpath:bean.xml"})
です.Javaプロファイルとxmlプロファイルを同時にロードしても問題ありません.ここまでの統合作業は完了しましたが、簡単です.IoCコンテナの作成やオブジェクトの取得を考慮することなく、どのIoCコンテナのプロファイルをロードするかに関心を持つだけで、
@Autowired
でターゲットオブジェクトの自動アセンブリを行うことができます.