テスト.
スプリングテストの適用
より多くの空白と複雑な状況が発生した場合、ApplicationContextの作成に多くの時間がかかる場合があります.ApplicationContextの作成時にすべての単色空調整オブジェクトを初期化するには、時間がかかります.
この問題を解決するには、ApplicationContextを静的レベルに保存できますが、Springで提供されるApplicationContextテストサポートを使用すると便利です.
アプリケーションコンテキストを管理してテスト
スプリングテストコンテキストフレームの適用
@Runwith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/applicationContext.xml")
public class UserDaoTest {
@Autowired
private ApplicationContext context;
@Before
public void setUp() {
this.dao = this.context.getBean("userDao", UserDao.class);
}
}
contextを初期化するコードがないため、メソッドでcontextを使用するとNullPointerExceptionが生成されますが、テストでは問題は発生しません.ここでより簡単なのは、ユーザデータを注入して使用することもできる.
public class UserDaoTest {
@Autowired
UserDao dao;
}
DIとテスト
DataSourceの実装クラスを変更せず、DB接続の情報も変更しない場合は、インタフェースを使用してDIを注入する必要がありますか?
(毎日悩む部分…)
DIは,小セルオブジェクトとは独立した作成と実行をテストする上で重要な役割を果たす.
テスト中に実際に実行しているDBに対してユーザー情報を修正または削除した場合?
そうしない場合は、@DirtiesContextを使用してApplicationContextの構成またはステータスの変更を通知し、DataSourceの情報を再生成して使用できます.しかし、注入されたものを覆い直す?した感じで
独立DIを設定する方法があります.
テスト用独立DI設定
本にはxmlファイルが単独で配置されており、@ContextConfigurationでプロファイルの情報をお伝えしていますが、propertiesファイルを適用しているのでブラウズしてみました.
https://stackoverflow.com/questions/32974432/spring-junit-testing-properties-file
配置に使用するローカルDB情報と、設定に使用するローカルDB情報とを分離します.
application-test.propertiesファイルを作成してパスを指定しようとしたところ、検索するとスタックオーバーフローに良い答えがありました.
testでは、ファイル名の違いを強制することなく、@PropertySource("classpath:application.properties")でパスを教える方法があります.
容器なしDI試験
public class UserDaoTest {
UserDao dao;
@Before
public void setUp() {
dao = new UserDao();
DataSource dataSource = new SingleConnectionDataSource("jdbc:mysql://localhost/testdb", "spring", "book", true);
dao.setDataSource(dataSource);
}
}
@Autowiredを必要とせず、直接オブジェクトを作成し、関係を設定します.Autowiredが1つしか入力されていない場合は、このフィールドは省略できます.
@Beforeメソッドは無条件に実行されるため、メソッドの内部で作成できます.
テスト学習
学習テストの利点
Reference
この問題について(テスト.), 我々は、より多くの情報をここで見つけました https://velog.io/@choitree_/테스트2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol