คำถามติดแท็ก assertion

14
แนวทางปฏิบัติที่ดีที่สุดสำหรับ Python ยืนยัน
มีปัญหาด้านประสิทธิภาพหรือการบำรุงรักษารหัสเมื่อใช้assertเป็นส่วนหนึ่งของรหัสมาตรฐานแทนที่จะใช้เพื่อการดีบักหรือไม่ คือ assert x >= 0, 'x is less than zero' ดีกว่าหรือแย่กว่า if x < 0: raise Exception, 'x is less than zero' นอกจากนี้ยังมีวิธีการตั้งกฎทางธุรกิจเช่นif x < 0 raise errorนั้นที่จะถูกตรวจสอบโดยไม่ต้องทำtry/except/finallyเช่นนั้นตลอดเวลาหากรหัสตลอดเวลาxน้อยกว่า 0 ข้อผิดพลาดจะเพิ่มขึ้นเช่นถ้าคุณตั้งไว้assert x < 0ที่จุดเริ่มต้นของฟังก์ชั่น ที่ไหนxจะกลายเป็น 0 แล้วมีข้อยกเว้นยก

11
ฉันจะยืนยันข้อความแสดงข้อยกเว้นด้วยคำอธิบายประกอบการทดสอบ JUnit ได้อย่างไร
ฉันได้เขียนการทดสอบ JUnit สองสาม@Testฉบับพร้อมคำอธิบายประกอบ หากวิธีทดสอบของฉันมีข้อยกเว้นที่ตรวจสอบและหากฉันต้องการยืนยันข้อความพร้อมกับข้อยกเว้นจะมีวิธีการทำ@TestคำอธิบายประกอบJUnit หรือไม่? AFAIK, JUnit 4.7 ไม่ได้มีคุณสมบัตินี้ แต่มีรุ่นอื่น ๆ ในอนาคตหรือไม่ ฉันรู้ใน. NET คุณสามารถยืนยันข้อความและชั้นยกเว้น กำลังมองหาคุณสมบัติที่คล้ายกันในโลก Java นี่คือสิ่งที่ฉันต้องการ: @Test (expected = RuntimeException.class, message = "Employee ID is null") public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() {}

11
เมื่อใดควรใช้การยืนยันและเมื่อใดที่ควรใช้ข้อยกเว้น
ส่วนใหญ่ฉันจะใช้ข้อยกเว้นในการตรวจสอบเงื่อนไขในรหัสของฉันฉันสงสัยว่าเวลาที่เหมาะสมในการใช้การยืนยันคืออะไร? ตัวอย่างเช่น Group group=null; try{ group = service().getGroup("abc"); }catch(Exception e){ //I dont log error because I know whenever error occur mean group not found } if(group !=null) { //do something } คุณช่วยระบุได้ไหมว่าการยืนยันเข้ากับที่นี่ได้อย่างไร? ฉันควรใช้คำยืนยันหรือไม่? ดูเหมือนว่าฉันไม่เคยใช้การยืนยันในรหัสการผลิตและดูเฉพาะการยืนยันในการทดสอบหน่วยเท่านั้น ฉันรู้ว่าในกรณีส่วนใหญ่ฉันสามารถใช้ข้อยกเว้นในการตรวจสอบเหมือนข้างต้นได้ แต่ฉันต้องการทราบวิธีที่เหมาะสมในการดำเนินการ "อย่างมืออาชีพ"

4
ไวยากรณ์ที่คาดไว้สำหรับการตรวจสอบข้อความยกเว้นใน assert_raises / must_raise ของ MiniTest คืออะไร
ไวยากรณ์ที่คาดหวังสำหรับการตรวจสอบข้อความข้อยกเว้นใน MiniTest's assert_raises/ must_raiseคืออะไร? ฉันกำลังพยายามยืนยันสิ่งต่อไปนี้โดยที่"Foo"ข้อความแสดงข้อผิดพลาดที่คาดไว้: proc { bar.do_it }.must_raise RuntimeError.new("Foo")
87 ruby  tdd  minitest  assertion 

8
เหตุใดฉันจึงได้รับความล้มเหลวในการยืนยัน C malloc
ฉันกำลังใช้การหารและพิชิตอัลกอริทึมพหุนามดังนั้นฉันจึงสามารถเปรียบเทียบกับการใช้งาน OpenCL ได้ แต่ฉันไม่สามารถmallocทำงานได้ เมื่อฉันเรียกใช้โปรแกรมมันจะจัดสรรสิ่งต่างๆมากมายตรวจสอบบางสิ่งจากนั้นส่งsize/2ไปยังอัลกอริทึม จากนั้นเมื่อฉันตีเส้นmallocอีกครั้งมันจะพ่นสิ่งนี้ออกมา: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size …
86 c  gcc  malloc  assertion 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.