Uji Unit di Mainkan! Kerangka Aplikasi yang tidak memerlukan pengujian Play Server

Salah satu opsi untuk menjalankan pengujian saya di Play! aplikasinya adalah dengan menjalankan perintah play auto-test.

Salah satu cara Play mengidentifikasi pengujian yang akan dijalankan adalah dengan menemukan semua kelas pengujian dengan kelas super play.test.UnitTest (atau setara Play lainnya). Memiliki kelas pengujian extend UnitTest tampaknya menimbulkan beberapa overhead seperti yang ditunjukkan oleh hal-hal yang diludahkan di konsol:

INFO   info, Starting C:\projects\testapp\.
WARN   warn, Declaring modules in application.conf is deprecated. Use dependencies.yml instead (module.secure)
INFO   info, Module secure is available (C:\play-1.2.1\modules\secure)
INFO   info, Module spring is available (C:\projects\testapp\.\modules\spring-1.0.1)
WARN   warn, Actually play.tmp is set to null. Set it to play.tmp=none
WARN   warn, You're running Play! in DEV mode
INFO   info, Connected to jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
INFO   info, Application 'Test App' is now started !

Tentunya memiliki lingkungan Play untuk pengujian yang memerlukan pengaturan seperti itu berguna, namun, jika saya memiliki kelas pengujian yang menguji kode produksi yang mengeksekusi logika yang tidak memerlukan lingkungan Play, saya tidak ingin memperluas UnitTest sehingga saya dapat menghindari overhead saat memulai lingkungan Play.

Jika saya memiliki kelas pengujian yang tidak memperluas UnitTest maka kelas tersebut tidak dapat dieksekusi dengan perintah play auto-test. Apakah ada cara agar perintah play auto-test menjalankan semua pengujian terlepas dari apakah saya memperluas UnitTest Play?

Sunting:Seseorang sebenarnya telah mengajukan tiket untuk edisi ini


person digiarnie    schedule 16.06.2011    source sumber


Jawaban (3)


jawaban singkatnya: tidak. Jawaban yang sedikit lebih panjang: tidak, kecuali Anda mengubah kode dalam kerangka kerja. Tes otomatis adalah tugas Ant yang menyetel server dan memicu pengujian, tetapi tugas tersebut tidak menggunakan tugas semut, sehingga tidak akan mendeteksi (secara default) pengujian unit 'normal' Anda.

Anda memiliki dua opsi: Anda menambahkan tugas tambahan ke file Ant Play untuk menjalankan pengujian unit melalui tugas tersebut (Anda juga harus menyertakan toples yang relevan) atau Anda mengedit kode yang digunakan untuk meluncurkan lingkungan pengujian Play.

Keduanya berarti mengubah kerangka kerja ke tingkat tertentu. Meskipun menyatakan bahwa Anda menggunakan Play, saya bertanya-tanya mengapa semua pengujian Anda tidak mengikuti pola Play...

person Pere Villega    schedule 16.06.2011
comment
Saya punya beberapa tes yang mungkin menguji kelas yang tidak memerlukan fitur permainan apa pun. Katakanlah saya memiliki kelas Matematika yang memiliki metode yang disebut int add(int kiri, int kanan). Gagasan menambahkan dua angka tidak mengharuskan saya memiliki lingkungan tes bermain. - person digiarnie; 17.06.2011
comment
@digiarnie Saya mengerti, tetapi ide di balik pengujian adalah menjalankan semuanya sekaligus untuk memastikan semuanya baik-baik saja, jadi dalam skenario itu masuk akal :) - person Pere Villega; 17.06.2011
comment
Saya tidak yakin apa yang ingin Anda katakan di sana. Masalah saya adalah tes otomatis tidak menjalankan semua tes kecuali saya memperluas UnitTest. Seperti yang Anda katakan, ide di balik pengujian adalah menjalankan semuanya sekaligus. play auto-test mengabaikan pengujian yang tidak memperluas UnitTest (atau superclass play lainnya)... - person digiarnie; 18.06.2011
comment
Oke, yang saya maksud adalah Anda memiliki beberapa kode yang Anda gunakan di dalam Play. Anda ingin menjalankan semua pengujian proyek itu sekaligus. Putar tes otomatis hanya mengenali tes Putar. Namun jika kode Anda digunakan di sana, dalam proyek Play, masuk akal untuk mengubah pengujian Play Tests sesuai keinginan Anda untuk menjalankannya bersama pengujian proyek lainnya. Ini lebih sederhana (atau seharusnya) daripada sebaliknya. Dengan tidak menggunakan format pengujian Play dalam kode yang digunakan di dalam Play, Anda melanggar konvensi mengenai konfigurasi kerangka kerja, dan saya tidak mengerti mengapa dalam hal ini hal itu menjadi persyaratan :) - person Pere Villega; 18.06.2011
comment
satu alasan: menjalankan tes individual di Eclipse membutuhkan waktu lama jika harus mulai diputar. Akan lebih baik jika play test menemukan tes lain dan memasukkannya secara opsional. - person Chris Betti; 05.08.2013
comment
Saya menemukan bahwa memperluas ke UnitTest dan menggunakan @RunWith(Enclosed.class) misalnya membuatnya muncul dan dijalankan dengan pengujian unit permainan, namun tidak menggunakan pelari uji permainan di IDE Anda. Namun peretasan... - person Stefan Hendriks; 22.07.2014

Jika tes ini tidak memerlukan Play! fiturnya, mengapa Anda tidak meletakkannya di perpustakaan? Dengan contoh Anda (tambahan matematika): buat paket kalkulator.jar, dan buat dengan Ant atau Maven setelah menjalankan tes. Dengan cara ini, Anda dapat menggunakan perpustakaan Anda di beberapa Play! proyek (atau Spring, Struts, ... jika Anda mau.

person Neoh59    schedule 20.06.2011

Saya benar-benar tidak mengerti mengapa masalah itu sendiri masih bisa diperdebatkan. Memiliki pengujian unit yang sederhana dan kecil (bahkan di bagian web proyek Anda) adalah hal yang paling normal untuk dilakukan. Biaya tambahan inisialisasi kerangka kerja memperlambat perjalanan bolak-balik Anda secara signifikan jika Anda memiliki banyak pengujian. Seperti yang terlihat di tiket, solusi saat ini adalah membuat pengujian unit Anda diperluas org.junit.Assert alih-alih play.test.UnitTest

person jonaskilian    schedule 17.11.2011