別の方法は、テストでスプリングブートアプリケーション全体を実行することです。この場合、Spring Bootアプリケーションは自動的に検出され、埋め込まれたmongoDBがダウンロードされてSpringBootによって開始されます
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourSpringBootApplicationTests {
08:12:14.676 INFO EmbeddedMongo:42-注:nopreallocは多くのアプリケーションでパフォーマンスを低下させる可能性があります08:12:14.694 INFO EmbeddedMongo:42 -2017-12-31T08:12:14.693 + 0200 I CONTROL [initandlisten] MongoDBstarting:pid =2246 port =52299 08:12:22.005 INFO connection:71 -Opened connection [connectionId {localValue:2、serverValue:2}] tolocalhost:52299
あなたの例の場合、別のポートで埋め込みMongoを開始するためにコードを変更することができます:
-
application.propertiesのプロパティを上書きするには、test / resources/test.propertiesファイルを追加します
mongo.db.name=person_testDB mongo.db.url=localhost mongo.db.port=12345
-
MongoDBConfigを変更します:MONGO_DB_PORTフィールドを追加します
@EnableMongoRepositories public class MongoDBConfig { @Value("${mongo.db.url}") private String MONGO_DB_URL; @Value(("${mongo.db.port:27017}")) private int MONGO_DB_PORT; @Value("${mongo.db.name}") private String MONGO_DB_NAME; @Bean public MongoTemplate mongoTemplate() { MongoClient mongoClient = new MongoClient(MONGO_DB_URL, MONGO_DB_PORT); MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, MONGO_DB_NAME); return mongoTemplate; } }
-
テストクラスを変更します:@DataMongoTestアノテーションを削除します。このアノテーションは、埋め込まれたmongoDBインスタンスの開始を強制します
static MongodExecutable mongodExecutable; @BeforeClass public static void setup() throws Exception { MongodStarter starter = MongodStarter.getDefaultInstance(); String bindIp = "localhost"; int port = 12345; IMongodConfig mongodConfig = new MongodConfigBuilder() .version(Version.Main.PRODUCTION) .net(new Net(bindIp, port, Network.localhostIsIPv6())) .build(); mongodExecutable = null; try { mongodExecutable = starter.prepare(mongodConfig); mongodExecutable.start(); } catch (Exception e){ // log exception here if (mongodExecutable != null) mongodExecutable.stop(); } } @AfterClass public static void teardown() throws Exception { if (mongodExecutable != null) mongodExecutable.stop(); }
もう1つの方法は、MongoRepositoryとinit Embedded Mongoをテスト@Configurationクラスの一部として使用することです。ここで概説します:SpringBootアプリケーションでの統合テスト用にEmbeddedMongDBをどのように構成しますか?