Một giải pháp thay thế sẽ là chạy toàn bộ ứng dụng khởi động mùa xuân trong thử nghiệm. Trong trường hợp này, ứng dụng khởi động mùa xuân của bạn sẽ được tự động phát hiện và mongoDB được nhúng sẽ được tải xuống và khởi động bởi Spring Boot
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourSpringBootApplicationTests {
08:12:14.676 INFO EmbeddedMongo:42 - lưu ý:noprealloc có thể ảnh hưởng đến hiệu suất trong nhiều ứng dụng 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 Kết nối thông tin:71 -Kết nối đã mở [connectionId {localValue:2, serverValue:2}] tolocalhost:52299
Trong trường hợp ví dụ của bạn, bạn có thể sửa đổi mã để bắt đầu nhúng Mongo trên cổng khác:
-
thêm tệp test / resoures / test.properties để ghi đè các thuộc tính từ application.properties
mongo.db.name=person_testDB mongo.db.url=localhost mongo.db.port=12345
-
sửa đổi MongoDBConfig:thêm trường 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; } }
-
sửa đổi lớp kiểm tra:loại bỏ chú thích @DataMongoTest. Chú thích này buộc bắt đầu phiên bản mongoDB được nhúng
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(); }
Một cách khác là sử dụng MongoRepository và init đã nhúng Mongo như một phần của lớp kiểm tra @Configuration:nó được nêu ở đây:Làm cách nào để bạn định cấu hình Embedded MongDB để kiểm tra tích hợp trong ứng dụng Spring Boot?