Saya penggemar berat unit testing, tetapi masih menggunakan FGDB untuk mengambil fitur untuk menjalankan pengujian unit saat menggunakan kerangka ArcObjects.
Adakah yang berhasil menggunakan ejekan terhadap pemikiran seperti IFeature, IGeometry, IWorkspace, dll. Jika demikian, saya ingin melihat beberapa contoh bagaimana Anda melakukannya. Saya tidak terlalu peduli tentang kerangka kerja mengejek apa yang Anda gunakan, hanya melihat bagaimana Anda melakukannya akan sangat dihargai.
Masalah yang saya lihat adalah bahwa Anda harus mengiris dan memotong di antara begitu banyak antarmuka pada objek yang sama, sehingga biaya overhead untuk membuat objek tiruan yang representatif akan sangat besar.
arcobjects
development
file-geodatabase
BlinkyBill
sumber
sumber
Jawaban:
Kami telah, pada proyek besar, berhasil cukup baik untuk mengisolasi kode ArcObjects dari logika bisnis kami. Itu umumnya cara untuk pergi, saya katakan, daripada mencoba untuk mengejek semuanya, bahkan jika mungkin menggunakan kerangka kerja mengejek untuk mendapatkan beberapa cara.
Tanyakan pada diri sendiri, Mengapa Anda merasa perlu mengejek. Biasanya, itu karena abstraksi yang hilang. Pikirkan tanggung jawab kecil dan meminimalkan permukaan monster ArcObject yang besar dan jelek. Hindari menyeret tipe ArcObject hanya karena beberapa aspek dari mereka diperlukan di suatu tempat.
Saya dapat memberikan satu contoh nyata dari proyek kami. Sebagian kode tampaknya tergantung pada IMxDocument. Ternyata satu-satunya alasan adalah bahwa tampilan aktif perlu di-refresh. Jadi kami membuat antarmuka IViewRefresher dan hanya bekerja pada itu; mudah diejek dan diuji. Selain itu, itu membuat maksud kode menjadi lebih jelas dan menghilangkan godaan bagi seseorang untuk mulai melakukan hal-hal lucu dengan IMxDocument yang tidak seharusnya mereka lakukan karena semua yang ingin kita lakukan di sini adalah penyegaran. Latihan yang sama dapat dilakukan dengan banyak kode ArcObjects.
Selain itu, kami membungkus semua akses ke kelas fitur dalam jenis pembungkus yang aman, lagi-lagi menyediakan kode yang dapat dipermainkan yang melindungi kode bisnis dari ArcObjects.
Kami telah membahas bahkan tidak menggunakan jenis geometri dari ArcObjects, tetapi saat ini kami mengizinkan antarmuka tersebut untuk digunakan secara langsung dalam kode kami. (Namun, pengetahuan antarmuka hanya diperbolehkan dan semua instantiasi geometri menggunakan pabrik geometri kami sendiri.)
Singkatnya, saya tidak mengolok-olok mengejek tetapi saya mendorong mengejek pada tingkat abstraksi yang berbeda dari ArcObjects.
sumber
Pengujian Unit untuk Pengembang Esri oleh Dave Bouwman dan Brian Noyle adalah tempat awal yang cukup bagus - terutama karena mereka mengeluarkan beberapa kode untuk dilihat.
sumber