Saya ingin membuat paket di Go dengan tes dan contoh untuk paket sebagai subdirektori untuk menjaga ruang kerja lebih bersih. Apakah ini mungkin dan jika iya, bagaimana?
Semua dokumentasi selalu menempatkan kode pengujian di tempat yang sama dengan kode lainnya, apakah ini lebih baik dalam beberapa hal atau hanya konvensi?
go test ./...
akan menjalankan tes pada folder saat ini dan semua subfolder. Lihat jawaban saya di bawahJawaban:
Perhatikan bahwa Anda dapat menjalankan
go test
"secara rekursif": Anda perlu membuat daftar semua paket yang ingin Anda uji .Jika Anda berada di folder root proyek Go Anda, ketik:
./...
Notasi ' ' dijelaskan di bagian " Deskripsi daftar paket " dari " perintahgo
":Jika Anda menyimpan
_test.go
file Anda dalam subfolder, perintah 'go test ./...
' akan dapat mengambilnya.Tapi:
Karena itu, saya masih lebih suka menyimpan
_test.go
file tepat di samping file sumber utama: lebih mudah ditemukan.sumber
Letakkan pengujian Anda bersama kode Anda dalam direktori yang sama dalam sebuah file bernama di
file_test.go
mana "file" adalah nama file kode sumber yang Anda uji. Ini adalah konvensi dan menurut pengalaman saya adalah yang terbaik.Jika
go test
alat tersebut tidak cukup otomatis untuk Anda, Anda dapat melihat GoConvey , yang memiliki UI web yang secara otomatis akan memperbarui dan menjalankan pengujian Go tradisional serta pengujian GoConvey (yang didasarkan pada perilaku, dan lebih mendokumentasikan sendiri) daripada tes Go tradisional).sumber
go test
juga dapat berfungsi untuk subfolder. Lihat jawaban saya di bawahDIEDIT
Dibangun di atas jawaban VonC,
Jawaban ini valid dalam
go1.11
. Belum diuji digo
versi atas .Bagi Anda yang ingin menyimpan pengujian mereka dalam sub-folder, katakanlah
test
, lalu jalankanakan mencoba menjalankan tes di setiap folder, bahkan yang tidak berisi tes apa pun, sehingga memiliki
?
dalam laporan berikutnya untuk folder non-tes.Lari
sebagai gantinya hanya akan menargetkan
test
folder Anda , sehingga memiliki laporan bersih yang difokuskan pada folder pengujian Anda saja.PERINGATAN
Harap diperhatikan bahwa menggunakan sub-folder pengujian akan mencegah penghitungan laporan cakupan. Filosofi dari pergi adalah meninggalkan file pengujian di folder paket.
sumber
go test ./.../test
returngo: warning: "./.../test" matched no packages
// tidak hanya menargetkan folder uji. go versi go1.13 darwin / amd64Saya biasanya tidak melakukan pengujian, tetapi Anda dapat mengelompokkan file Anda ke dalam direktori dan menggunakan import like
import "./models"
jika satu tingkatimport "../models
jika satu tingkat keluar dan satu tingkat masukMisalnya untuk:
./models/todo.go
./test/todo_test.go
untuk menguji
todo.go
daritodo_test.go
, impor Anda dalamtodo_test.go
wasiatimport "../models"
sumber