ในการตอบคำถามที่สองของคุณ: มีบางสิ่งที่ลึกซึ้งกว่าที่ห้ามการทดสอบ (อย่างน้อยบางส่วน) ในการทดสอบหลายเธรดหรือไม่
โค้ดจำนวนมากใช้งานได้เมื่อรันเธรดเดี่ยวเท่านั้น มันไม่สำคัญที่จะสร้างความขัดแย้งและการหยุดชะงักของทรัพยากรโดยไม่ตั้งใจเมื่อเขียนโปรแกรมบนสมมติฐานที่ว่าพวกเขาจะถูกเรียกใช้เธรดเดี่ยว และใช้งานได้ดีเพราะโปรแกรมส่วนใหญ่รันเธรดเดี่ยวจริง ๆ การขนานนั้นได้มาจากการรันหลาย ๆ สำเนาหรือโปรแกรมต่าง ๆ ในเวลาเดียวกัน (เว็บสคริปต์เป็นหนึ่งในตัวอย่างทั่วไป - ผู้ใช้จำนวนมากที่เข้าถึงหน้าเดียวหมายถึงสำเนาจำนวนมากของสคริปต์สำหรับหน้านั้นทำงานในเวลาเดียวกัน)
ลองนึกภาพคลาส "ล็อกไฟล์" อย่างง่าย เมื่อคุณสร้างอินสแตนซ์มันจะเปิดไฟล์สำหรับการเขียนเมื่อคุณปล่อยอินสแตนซ์มันจะปิดไฟล์ ดังนั้นการทดสอบครั้งแรกจะสร้างอินสแตนซ์และเริ่มทำการทดสอบ การทดสอบที่สองทำสิ่งเดียวกันในหัวข้อที่สอง และล้มเหลวเนื่องจากอินสแตนซ์ที่สองไม่สามารถเข้าถึงการเขียนไปยังไฟล์ แต่ถ้าเรียกใช้ครั้งละการทดสอบทั้งหมดจะผ่าน
ทั้งหมดนี้สามารถเขียนโค้ดได้และตัวอย่างง่าย ๆ สามารถปรับแต่งให้ทำงานได้ แต่การทำเช่นนั้นอาจไม่จำเป็นสำหรับโปรแกรมเดิม การเขียนโค้ดที่ปลอดภัยสำหรับเธรดเพียงเพื่อให้คุณสามารถเรียกใช้การทดสอบหน่วยนั้นไม่มีเหตุผลสำหรับคนจำนวนมาก ดังนั้นการทดสอบหน่วยแบบมัลติเธรดควรเป็นทางเลือกเพิ่มเติม