Saya memiliki kelas yang dimaksudkan untuk menghasilkan kata sandi acak dengan panjang yang juga acak, tetapi terbatas antara min yang ditentukan dan panjang maks.
Saya sedang membangun unit test, dan mengalami hambatan kecil yang menarik dengan kelas ini. Seluruh ide di balik unit test adalah harus diulang. Jika Anda menjalankan tes seratus kali, itu akan memberikan hasil yang sama seratus kali. Jika Anda bergantung pada beberapa sumber daya yang mungkin ada atau tidak ada di sana atau mungkin atau mungkin tidak dalam kondisi awal yang Anda harapkan, maka Anda harus mengejek sumber daya yang dimaksud untuk memastikan bahwa pengujian Anda benar-benar selalu dapat diulang.
Tetapi bagaimana dalam kasus-kasus di mana SUT seharusnya menghasilkan keluaran yang tidak ditentukan?
Jika saya memperbaiki panjang min dan maks ke nilai yang sama maka saya dapat dengan mudah memeriksa bahwa kata sandi yang dihasilkan memiliki panjang yang diharapkan. Tetapi jika saya menentukan rentang panjang yang dapat diterima (katakanlah 15 - 20 karakter), maka Anda sekarang memiliki masalah bahwa Anda dapat menjalankan tes seratus kali dan mendapatkan 100 lintasan tetapi pada lari ke-101 Anda mungkin mendapatkan string 9 karakter kembali.
Dalam hal kelas kata sandi, yang intinya cukup sederhana, seharusnya tidak membuktikan masalah besar. Tapi itu membuat saya berpikir tentang kasus umum. Apa strategi yang biasanya diterima sebagai yang terbaik untuk diambil ketika berhadapan dengan SUT yang menghasilkan output yang tidak ditentukan oleh desain?