Sorunuzu okurken, bağırsak reaksiyonum, kapsamınızın birim test için çok karmaşık olmasıdır. Ücretsiz e-kitap Birim Testi'ni kısa bir şekilde okumanızı tavsiye ederim. Ancak, satranç kodu yazma deneyimim yok (belki paradigmalarınız farklıdır) - yaşamak için yazılım yapmama rağmen.
Bir birim testi çok basit olmalı ve 1 tek şey yapan bir işlevi test etmelidir. Daha sonra işlevleri çalışacakları makul bir beklentiyle birleştirebilirsiniz. Örneğin, belirli bir hareketin yasal olup olmadığını belirlemek için her bir parça için bir birim test bekleyebilirim. Her parça için kralı kontrol altına alıp almadığını belirlemek için bir birim testi. Nereye saldırdığını vs. belirlemek için her bir parça için bir test.
Bir pozisyonu test etmek çok karmaşık bir birim testi gibi görünüyor ve iyice yapmak çok daha zor olurdu. Bunun yerine daha küçük fonksiyonlara karşı daha küçük testler yazın ve daha sonra tek tek çalışanların - bir pozisyonu değerlendirmenin sadece basit fonksiyonlar üzerinde yineleme meselesi olduğunu bilin.
İyi (zorlanmayan) bir hareket için bir pozisyonu test etmek istiyorsanız, birim testlerinin satranç motorunuzun uzun vadeli gelişimini ve gücünü yapay olarak sınırlayacağını düşünüyorum ... Bir birim testinin ikili bir sonucu, motorunuzu her seferinde aynı hareket.
Ayrıca bilinen oyunsonu olan bir montaj ilişkisine 'en doğrudan' yol için birim testleri eklemeyi de inceleyeceğim. Ben de bilinen açıklıklar arasında geçiş için birim testleri eklemek istiyorum. Orta oyun birimi testleri çok daha zor olacaktır - belki bir pozisyonu takmak ve motorun kullanılabilir bir sonuç verdiğini (ikili bir yanıttır) değerlendirmek.
Motorunuz için bir dizi konumu değerlendirme sorusu için, bu soruyu "satranç" etiketi ile https://stackoverflow.com/ adresine koyarak çok daha iyisini yapabilirsiniz .