Alternatifnya adalah menjalankan seluruh aplikasi booting pegas dalam pengujian. Dalam hal ini aplikasi booting pegas Anda akan ditemukan secara otomatis dan mongoDB yang disematkan akan diunduh dan dimulai oleh Boot Musim Semi
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourSpringBootApplicationTests {
08:12:14.676 INFO EmbeddedMongo:42 - catatan:noprealloc dapat mengganggu kinerja di banyak aplikasi 08:12:14.694 INFO EmbeddedMongo:42 -2017-12-31T08:12:14.693+0200 I CONTROL [initdlisten] MongoDBstarting :pid=2246 port =52299 08:12:22.005 INFO koneksi:71 -Koneksi terbuka [connectionId{localValue:2, serverValue:2}] tolocalhost:52299
Dalam kasus contoh Anda, Anda dapat memodifikasi kode untuk memulai Mongo yang disematkan pada port yang berbeda:
-
tambahkan file test/resoures/test.properties untuk mengganti properti dari application.properties
mongo.db.name=person_testDB mongo.db.url=localhost mongo.db.port=12345
-
memodifikasi MongoDBConfig:tambahkan bidang 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; } }
-
ubah kelas pengujian:hapus anotasi @DataMongoTest. Anotasi ini memaksa memulai instance mongoDB yang disematkan
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(); }
Satu cara lagi adalah dengan menggunakan MongoRepository dan init Embedded Mongo sebagai bagian dari kelas pengujian @Configuration:dijelaskan di sini:Bagaimana Anda mengonfigurasi Embedded MongDB untuk pengujian integrasi dalam aplikasi Spring Boot?