หน่วยทดสอบโค้ดในโฟลเดอร์ /src ของแพ็คเกจ R หรือไม่

ฉันกำลังสนับสนุนแพ็คเกจ R ที่ใช้โค้ด C เพื่อการคำนวณอย่างกว้างขวาง

เราได้เริ่มเขียนการทดสอบสำหรับฟังก์ชัน R โดยใช้แพ็คเกจ testthat โดยวางการทดสอบใน inst/tests ทำตามคำแนะนำที่นี่

แพ็คเกจทดสอบนั้นเหมาะสำหรับการทดสอบฟังก์ชัน C โดยตรงหรือไม่ (เช่น ที่ไม่มีอินเทอร์เฟซ R) หรือเราจะพบแพ็คเกจการทดสอบ C แยกต่างหาก? หากเป็นเช่นนั้น 1) การทดสอบเหล่านี้ควรไปที่ใด 2) ฉันจะทำให้การทดสอบเหล่านี้ทำงานในช่วง R CMD check ได้อย่างไร และ 3) แพคเกจการทดสอบ C ใด ๆ ที่เหมาะสมอย่างยิ่งในบริบทนี้หรือไม่


person David LeBauer    schedule 27.05.2013    source แหล่งที่มา


คำตอบ (1)


ฉันพบว่าคำถามสับสนเล็กน้อย:

  • ไม่ว่าคุณจะพิจารณาว่าโค้ด C ของคุณรองรับฟังก์ชัน R ระดับสูงกว่าที่คุณสามารถทดสอบได้ที่ R (ตามที่คุณดูเหมือนจะทำไปแล้ว)

  • หรือคุณถือว่าโค้ด C ของคุณเป็นแบบสแตนด์อโลนมากกว่า ซึ่งในกรณีนี้ คุณสามารถใช้หนึ่งในเฟรมเวิร์กการทดสอบหน่วยนับพันล้านสำหรับ C

แพ็คเกจจำนวนมากที่ใช้ Rcpp ยังใช้การทดสอบหน่วยที่ครอบคลุม ไม่ว่าจะผ่าน RUnit หรือผ่าน testthat คุณสามารถดูสิ่งนั้นได้ โดยทั่วไปฉันจะทดสอบที่ระดับฟังก์ชัน R ซึ่งมักจะหมายถึงการทดสอบฟังก์ชัน C++ พื้นฐาน

person Dirk Eddelbuettel    schedule 27.05.2013
comment
มีฟังก์ชัน set R ที่เรียกใช้ฟังก์ชัน C และฉันสามารถทดสอบฟังก์ชันเหล่านี้ได้จาก R อย่างไรก็ตาม ยังมีฟังก์ชัน C ที่ไม่เคยถูกเรียกจาก R และเรากำลังสร้างฟังก์ชันเหล่านี้มากขึ้นเมื่อเราแยกตัวประกอบใหม่ แต่จริงๆ แล้วมันไม่ใช่ ไม่ใช่ห้องสมุดแบบสแตนด์อโลน - person David LeBauer; 28.05.2013
comment
ฉันอนุมานว่าการเขียน R wrappers ไปยังฟังก์ชัน C นั้นง่ายขึ้นอย่างมากโดยใช้ Rcpp โดยยึดตาม คำอธิบายแพ็คเกจ Rcpp ที่ระบุเฟรมเวิร์กที่อนุญาตให้เปิดเผยฟังก์ชันและคลาส C++ ในระดับ R บางทีแนวทางที่ฉันได้รับสืบทอดมานั้นไม่ดีนัก แต่เราผ่านรายการพารามิเตอร์ประเภทต่างๆ มากมาย - person David LeBauer; 28.05.2013
comment
หากคุณได้อ่านเรื่อง Rcpp (โดยเฉพาะสิ่งที่เราเรียกว่า แอตทริบิวต์ Rcpp) คุณจะเห็นว่าฟังก์ชันการห่อ C (และ C++) ในตอนนี้เป็นเรื่องเล็กน้อยและเป็นอัตโนมัติเต็มรูปแบบ - person Dirk Eddelbuettel; 28.05.2013