[解決済み】Junit TestでSpring-Bootのデフォルトのapplication.propertiesの設定を上書きする。
質問
Spring-Bootアプリケーションで、デフォルトのプロパティが
application.properties
ファイル(src/main/resources/application.properties)をクラスパスで指定します。
JUnitテストのいくつかのデフォルト設定を
test.properties
ファイル (src/test/resources/test.properties) を使用します。
私は通常、Junit Testsのために専用のConfig Classを用意しています。
package foo.bar.test;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
}
を使うのはどうかと最初に思いました。
@PropertySource("classpath:test.properties")
をTestConfigクラスで使用すればよいのですが、これらのプロパティはapplication.propertiesの設定を上書きしません(Spring-Boot Reference Doc -を参照)。
23. 外部化されたコンフィギュレーション
).
そこで、試しに
-Dspring.config.location=classpath:test.properties
を実行します。しかし、テストを実行するたびにこのシステムプロパティを設定するのは嫌です。そこで、私はコードにそれを入れました
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
が、残念ながらまたもや成功しませんでした。
をオーバーライドする簡単な方法があるはずです。
application.properties
の設定は、JUnitのテストでは
test.properties
見落としていたようです。
解決方法は?
を使用することができます。
@TestPropertySource
の値をオーバーライドするために
application.properties
. そのjavadocから。
テストプロパティソースは、システムおよびアプリケーションプロパティソースで定義されたプロパティを選択的にオーバーライドするために使用することができます。
例えば
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ExampleApplication.class)
@TestPropertySource(locations="classpath:test.properties")
public class ExampleApplicationTests {
}
関連
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] IntegerからBigIntegerへの変換
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6