MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara membuat tes junit menggunakan mongoDB yang disematkan dalam aplikasi springboot?

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:

  1. 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
    
  2. 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;
        }
    }
    
  3. 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?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gambar yang dikembalikan dari REST API selalu ditampilkan rusak

  2. Menjalankan Mongo like Query (JSON) melalui Java

  3. MongoSocketReadException:Mencapai akhir aliran sebelum waktunya (setelah periode tidak aktif)

  4. Mongodb menjumlahkan ukuran bidang array

  5. Set Replika MongoDB dengan Arbiter