Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengimport kod ujian dari satu modul ke modul lain tanpa mendedahkannya kepada kod pengeluaran?

Bagaimana untuk mengimport kod ujian dari satu modul ke modul lain tanpa mendedahkannya kepada kod pengeluaran?

PHPz
PHPzke hadapan
2024-02-09 21:00:10579semak imbas

Bagaimana untuk mengimport kod ujian dari satu modul ke modul lain tanpa mendedahkannya kepada kod pengeluaran?

editor php Yuzi Dalam pembangunan perisian, kita selalunya perlu menguji kod. Walau bagaimanapun, kami tidak mahu mendedahkan kod ujian kepada persekitaran pengeluaran untuk mengelakkan kekeliruan yang tidak perlu. Jadi, bagaimanakah anda mengimport kod ujian dari satu modul ke modul yang lain tanpa mendedahkannya kepada kod pengeluaran? Ini adalah masalah biasa, tetapi ada penyelesaiannya. Artikel ini akan memperkenalkan anda kepada kaedah yang berkesan untuk mencapai matlamat ini, menjadikan kod anda lebih selamat dan boleh dipercayai.

Kandungan soalan

TLDR: Saya meletakkan struct TestLogger dalam logutils/test-logger_test.go dan cuba merujuknya dalam authentication/login_tests.go. Apabila membina ujian untuk modul pengesahan, pengkompil mengadu bahawa TestLogger tidak diisytiharkan. Satu-satunya penyelesaian ialah menamakan semula test-logger_test.go kepada test-logger.go, tetapi ini berisiko untuk merujuk TestLogger dalam kod pengeluaran.

Apabila menjalankan ujian go, golang nampaknya tidak mengimport kod ujian (kod yang diisytiharkan dalam fail dengan akhiran _test.go) dari satu modul ke modul yang lain. Adakah saya melakukan sesuatu yang salah atau ini cara golang direka? Adakah terdapat sebarang penyelesaian?

Contoh mudah untuk menggambarkan:

Saya mempunyai modul "perpustakaan" (mari kita panggil ia il logutils) dan modul "aplikasi" (mari kita panggil ia "pengesahan"). Modul logutils mempunyai ujian sendiri yang meliputi semua fungsi khusus pelaksanaan pembalak (cth. FileLogger, HttpLogger) dan semuanya baik-baik saja.

Modul logutils juga mengisytiharkan TestLogger yang boleh digunakan oleh modul "klien" (seperti "pengesahan") untuk memastikan mereka log semuanya dengan betul tanpa perlu menyediakan pengelogan fail atau http. Ia pada asasnya hanya melaksanakan antara muka Logger tetapi hanya log segala-galanya ke penimbal yang boleh disahkan pada akhir ujian.

Jadi modul "pengesahan" boleh mengisytiharkan fail _test.go sendiri yang membuat TestLogger dan semuanya berfungsi seperti azimat.

Apa yang mengganggu saya ialah TestLogger perlu diisytiharkan dalam fail pengeluaran biasa (logutils/test-logger.go) dan bukan dalam fail ujian (logutils/test-logger_test.go), jika tidak, ujian pengesahan akan mengadu bahawa TestLogger adalah tidak ditakrifkan. Tetapi dengan melakukan ini, tiada apa yang menghalang TestLogger daripada dirujuk/digunakan dalam kod pengeluaran.

Apa yang saya mahukan ialah kod dalam mana-mana fail logutils _test.go boleh diimport dalam mana-mana fail pengesahan _test.go (tetapi bukan dalam fail .go pengeluaran).

Sebarang pandangan/cadangan?

Edit: kesilapan menaip tetap

Penyelesaian

Anda tidak boleh memiliki ini. Begitu mudah. (Tiada perkara seperti "fail pengeluaran .go". Kod ujian bukan "bukan pengeluaran".)

Atas ialah kandungan terperinci Bagaimana untuk mengimport kod ujian dari satu modul ke modul lain tanpa mendedahkannya kepada kod pengeluaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam