JUnitテストの新しいアイデア
以前に使用されたネイティブのJUnitテストを見てみましょう。私たちはすでにそれをよく知っています。
@Test
// 测试数据源连接
public void test1() throws Exception {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
ComboPooledDataSource dataSource = (ComboPooledDataSource) app.getBean("dataSource");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
@Test
// 测试userService对象
public void test2() throws Exception {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) app.getBean("userService");
System.out.println(userService);
}
このデザインはそれほど完璧ではないようです。
①new
アプリコンテナは毎回取り出す必要があります
②再利用しgetBean
てテスト対象物を取得する
ため、より美しいデザインを考えています。アノテーションを通じて、テストしたいBeanオブジェクトをテストクラスに直接注入します。
Springに統合されたJUnit実装のアイデア
❶JUnit座標をインポートする
❷ @ RunWithを使用して、このクラスがSpringテスト環境で実行されていることを示します
❸ @ ContextConfigurationを使用して、構成ファイル/構成クラスを指定します
❹@ Autowiredを使用して、テストするオブジェクトを挿入します
❺使用@Testはテストに、一般的にオブジェクトを印刷します
コードデモ
❶JUnit座標をインポートする
<!-- 注意:如果spring是5版本及以上,junit版本必须是4.12及以上 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
❷❸❹❺テストコードの設計
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml") // 如果是配置文件
@ContextConfiguration(classes = {
SpringConfiguration.class}) // 如果是配置类
public class SpringJunitTest {
@Autowired
private UserService userService;
@Autowired
private DataSource dataSource;
@Test
public void test() {
System.out.println(userService);
System.out.println(dataSource);
}
}