คำถามติดแท็ก unit-testing

การทดสอบหน่วยเป็นวิธีการที่แต่ละหน่วยของรหัสที่มาจะถูกทดสอบเพื่อตรวจสอบว่าพวกเขาจะเหมาะสำหรับการใช้งาน

6
เข้าร่วมการทดสอบจากหลายไฟล์ด้วย mocha.js
ฉันกำลังพยายามเข้าร่วมการทดสอบทั้งหมดจากหลายไฟล์ในไฟล์เดียวโดยมีลักษณะดังนี้: describe('Controllers', function() { describe('messages.js', function() { require('./controllertests/messages').test(options); }) describe('users.js', function() { require('./controllertests/users').test(options); }) }) ฉันค่อนข้างแน่ใจว่านี่ไม่ใช่วิธีที่ดีที่สุดในการเข้าร่วมการทดสอบฉันมีตัวอย่างการค้นหาที่ผิดพลาดเกี่ยวกับวิธีการทำสิ่งนี้: s

17
การทดสอบหน่วยของคุณลึกแค่ไหน?
ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ สิ่งที่ฉันพบเกี่ยวกับ TDD ก็คือต้องใช้เวลาในการตั้งค่าการทดสอบของคุณและฉันมักจะขี้เกียจเขียนโค้ดให้น้อยที่สุด สิ่งแรกที่ฉันทำคือทดสอบตัวสร้างของฉันได้ตั้งค่าคุณสมบัติทั้งหมดแล้ว แต่นี่เกินความสามารถหรือไม่ คำถามของฉันคือคุณเขียนแบบทดสอบหน่วยให้ละเอียดระดับใด .. และมีกรณีทดสอบมากเกินไปหรือไม่?
88 unit-testing  tdd 

6
JUnit 4 vs TestNG - อัปเดต 2013 - 2014 [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ JUnit 4 และ TestNG เคยเทียบเคียงกัน ข้อดีข้อเสียของกรอบการทดสอบทั้งสองคืออะไร?

5
มีวิธีทดสอบ EventEmitter ใน Angular2 ไหม
ฉันมีส่วนประกอบที่ใช้ EventEmitter และ EventEmitter ถูกใช้เมื่อมีคนคลิกในเพจ มีวิธีใดบ้างที่ฉันสามารถสังเกต EventEmitter ระหว่างการทดสอบหน่วยและใช้ TestComponentBuilder เพื่อคลิกองค์ประกอบที่ทริกเกอร์เมธอด EventEmitter.next () และดูสิ่งที่ส่ง


7
แนวทางปฏิบัติที่ดีที่สุดของการพัฒนาแบบทดสอบโดยใช้ C # และ RhinoMocks [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา เพื่อช่วยทีมของฉันเขียนโค้ดที่สามารถทดสอบได้ฉันจึงได้จัดทำรายการแนวทางปฏิบัติที่ดีที่สุดง่ายๆนี้เพื่อทำให้ฐานรหัส C # ของเราสามารถทดสอบได้มากขึ้น (บางประเด็นอ้างถึงข้อ จำกัด ของ Rhino Mocks ซึ่งเป็นกรอบการเยาะเย้ยสำหรับ C # แต่กฎอาจมีผลบังคับใช้มากขึ้นเช่นกัน) ใครมีแนวทางปฏิบัติที่ดีที่สุดที่พวกเขาปฏิบัติตามหรือไม่? ในการเพิ่มความสามารถในการทดสอบโค้ดให้ปฏิบัติตามกฎเหล่านี้: เขียนแบบทดสอบก่อนแล้วจึงเขียนโค้ด เหตุผล: เพื่อให้แน่ใจว่าคุณเขียนโค้ดที่ทดสอบได้และโค้ดทุกบรรทัดจะได้รับการทดสอบที่เขียนขึ้น ออกแบบคลาสโดยใช้การฉีดแบบพึ่งพา เหตุผล: คุณไม่สามารถล้อเลียนหรือทดสอบสิ่งที่มองไม่เห็นได้ แยกโค้ด UI ออกจากพฤติกรรมโดยใช้ Model-View-Controller หรือ Model-View-Presenter เหตุผล: อนุญาตให้ทดสอบตรรกะทางธุรกิจในขณะที่ย่อส่วนที่ไม่สามารถทดสอบได้ (UI) อย่าเขียนวิธีการหรือคลาสแบบคงที่ เหตุผล: วิธีการคงที่เป็นเรื่องยากหรือเป็นไปไม่ได้ที่จะแยกออกและ Rhino Mocks ไม่สามารถล้อเลียนได้ โปรแกรมปิดอินเทอร์เฟซไม่ใช่คลาส เหตุผล: การใช้อินเทอร์เฟซจะชี้แจงความสัมพันธ์ระหว่างวัตถุ อินเทอร์เฟซควรกำหนดเซอร์วิสที่อ็อบเจ็กต์ต้องการจากสภาพแวดล้อม นอกจากนี้อินเทอร์เฟซสามารถล้อเลียนได้อย่างง่ายดายโดยใช้ Rhino …

6
เหตุใด Assert.AreEqual (T obj1, Tobj2) จึงล้มเหลวด้วยอาร์เรย์ไบต์ที่เหมือนกัน
ฉันมีอาร์เรย์ไบต์ที่เหมือนกันสองอาร์เรย์ในโค้ดส่วนต่อไปนี้: /// <summary> ///A test for Bytes ///</summary> [TestMethod()] public void BytesTest() { byte[] bytes = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketData); TransferEventArgs target = new TransferEventArgs(bytes); byte[] expected = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketValue); byte[] actual; actual = target.Bytes; Assert.AreEqual(expected, actual); } อาร์เรย์ทั้งสองมีค่าเท่ากับไบต์มาก ในสถานการณ์นี้เหตุใด Assert.AreEqual จึงล้มเหลว

5
Perl build, unit testing, code coverage: ตัวอย่างการทำงานที่สมบูรณ์
คำตอบ Stackoverflow ส่วนใหญ่ที่ฉันพบเกี่ยวกับกระบวนการสร้าง Perl และการทดสอบหน่วยและการครอบคลุมโค้ดเพียงแค่ชี้ให้ฉันไปที่ CPAN เพื่อดูเอกสารที่นั่น ไม่มีอะไรผิดปกติในการชี้ไปที่โมดูล CPAN เพราะนั่นคือที่ที่เอกสารฉบับเต็มควรจะอยู่ ฉันมีปัญหาในการค้นหาตัวอย่างโค้ดการทำงานที่สมบูรณ์ในหลาย ๆ กรณี ฉันได้ค้นหาทั่วอินเทอร์เน็ตเพื่อหาตัวอย่างโค้ดที่ใช้งานได้จริงซึ่งฉันสามารถดาวน์โหลดหรือวางลงใน IDE ของฉันได้เช่นซอร์สโค้ดตัวอย่าง "Hello World" ของบทช่วยสอนทั่วไปของคุณ แต่เป็นตัวอย่างที่แสดงให้เห็นถึงกระบวนการสร้างด้วยการทดสอบหน่วยและโค้ด การวิเคราะห์ความครอบคลุม ใครมีตัวอย่างเล็ก ๆ ของโครงการทำงานที่แสดงให้เห็นถึงเทคโนโลยีและกระบวนการเหล่านี้หรือไม่? (ฉันมีตัวอย่างการทำงานเล็กน้อยและฉันจะตอบคำถามของตัวเองด้วย แต่อาจมีผู้ใช้ SO รายอื่นที่มีตัวอย่างที่ดีกว่าตัวอย่างที่ฉันคิดขึ้นมา)

1
Moq ตรวจสอบด้วยพารามิเตอร์วัตถุ
ฉันกำลังพยายามตรวจสอบพารามิเตอร์ที่เป็นคลาส โค้ดที่กำลังทดสอบนั้นใช้ได้ จุดบกพร่องอยู่ระหว่างการทดสอบ ฉันได้ลองสองวิธีซึ่งทั้งสองวิธีล้มเหลว นี่คือความพยายามของฉัน: 1: this.MockImageResizeFilter.Verify(m => m.Filter(this.UploadedFileData, new ImageFilterOptions() { Width = 256, Height = 256, })); สิ่งนี้จะล้มเหลวเสมอแม้ว่าออบเจ็กต์จะส่งผ่านเนื่องจากพารามิเตอร์ที่สองมีคุณสมบัติเท่ากัน พารามิเตอร์แรกได้รับการตรวจสอบแล้ว 2: this.MockImageResizeFilter.Setup(m => m.Filter(It.IsAny<byte[]>(), It.IsAny<ImageFilterOptions>())) .Callback<byte[], ImageFilterOptions>((data, options) => { Assert.AreEqual(this.UploadedFileData, data, "data"); Assert.AreEqual(filterOptions.Width, options.Width, "Width"); Assert.AreEqual(filterOptions.Height, options.Height, "Height"); } ); สิ่งนี้มักจะผ่านไปแม้ว่ามันจะล้มเหลวก็ตาม Asserts ในการเรียกกลับล้มเหลว แต่ข้อยกเว้นจะไม่ถูกส่งผ่านไปยังบริบทภายนอกดังนั้นการทดสอบจะผ่านไปเสมอ คุณช่วยค้นหาสิ่งที่ฉันทำผิดได้ไหม
86 c#  .net  unit-testing  moq 

4
มีชุดไฟล์“ Lorem ipsums” สำหรับทดสอบปัญหาการเข้ารหัสอักขระหรือไม่
สำหรับการจัดวางเรามีข้อความ "Lorem ipsum" ที่มีชื่อเสียงเพื่อทดสอบว่ามีลักษณะอย่างไร สิ่งที่ฉันกำลังมองหาคือชุดไฟล์ที่มีข้อความที่เข้ารหัสด้วยการเข้ารหัสต่างๆที่ฉันสามารถใช้ในการทดสอบ JUnit เพื่อทดสอบวิธีการบางอย่างที่จัดการกับการเข้ารหัสอักขระเมื่ออ่านไฟล์ข้อความ ตัวอย่าง: มีISO 8859-1ไฟล์Windows-1252ทดสอบที่เข้ารหัสและไฟล์ทดสอบที่เข้ารหัส ของ Windows 1252 จะเรียกความแตกต่างในภูมิภาค 80 16 - 9F 16 กล่าวอีกนัยหนึ่งคือต้องมีอักขระอย่างน้อยหนึ่งตัวของภูมิภาคนี้เพื่อแยกความแตกต่างจาก ISO 8859-1 ชุดไฟล์ทดสอบที่ดีที่สุดอาจเป็นที่ที่ไฟล์ทดสอบสำหรับการเข้ารหัสแต่ละรายการมีอักขระทั้งหมดเพียงครั้งเดียว แต่บางทีฉันอาจไม่รู้ถึง sth - เราทุกคนชอบสิ่งที่เข้ารหัสนี้ใช่มั้ย? :-) มีชุดไฟล์ทดสอบสำหรับปัญหาการเข้ารหัสอักขระหรือไม่?

7
phpunit หลีกเลี่ยงข้อโต้แย้งของตัวสร้างสำหรับการเยาะเย้ย
อะไรคือวิธีที่จะหลีกเลี่ยงไม่ให้ phpunit เรียกตัวสร้างสำหรับวัตถุจำลอง? มิฉะนั้นฉันจะต้องมีวัตถุจำลองเป็นอาร์กิวเมนต์ตัวสร้างอีกชิ้นหนึ่งสำหรับสิ่งนั้นเป็นต้น api ดูเหมือนจะเป็นดังนี้: getMock($className, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) ฉันไม่ได้ทำงาน มันยังคงบ่นเกี่ยวกับอาร์กิวเมนต์ตัวสร้างแม้ว่าจะ$callOriginalConstructorตั้งค่าเป็นเท็จก็ตาม ฉันมีวัตถุเพียงชิ้นเดียวในตัวสร้างและเป็นการฉีดแบบพึ่งพา ดังนั้นฉันไม่คิดว่าฉันมีปัญหาในการออกแบบที่นั่น

10
ทดสอบ JAX-RS Web Service หรือไม่
ฉันกำลังมองหาวิธีสร้างการทดสอบอัตโนมัติสำหรับบริการเว็บที่ใช้JAX-RS (Java API สำหรับ RESTful Web Services) โดยพื้นฐานแล้วฉันต้องการวิธีส่งปัจจัยการผลิตบางอย่างและตรวจสอบว่าฉันได้รับคำตอบที่คาดหวัง ฉันต้องการทำผ่าน JUnit แต่ฉันไม่แน่ใจว่าจะทำได้อย่างไร คุณใช้แนวทางใดในการทดสอบบริการบนเว็บของคุณ อัปเดต: ดังที่ entzik ชี้ให้เห็นการแยกบริการเว็บออกจากตรรกะทางธุรกิจทำให้ฉันสามารถทดสอบตรรกะทางธุรกิจได้ อย่างไรก็ตามฉันต้องการทดสอบรหัสสถานะ HTTP ที่ถูกต้องเป็นต้น

3
วิธีจับคู่ null ที่ส่งผ่านไปยังพารามิเตอร์ของ Class <T> กับ Mockito
ฉันมีวิธีการดังนี้: public &lt;T&gt; method(String s, Class&lt;T&gt; t) {...} ฉันต้องตรวจสอบว่าnullส่งผ่านไปยังอาร์กิวเมนต์ที่สองเมื่อใช้ตัวจับคู่กับพารามิเตอร์อื่นฉันได้ทำสิ่งนี้แล้ว: @SuppressWarnings("unchecked") verify(client).method(eq("String"), any(Class.class)); แต่มีวิธีที่ดีกว่า (โดยไม่มีคำเตือนการระงับ) หรือไม่? Tแสดงถึงประเภทการส่งคืนของวิธีการอื่น ๆ ซึ่งบางครั้งvoidและในกรณีเหล่านี้nullจะถูกส่งเข้ามา

3
Mockito mocks ชั้นสุดท้ายในประเทศ แต่ล้มเหลวในเจนกินส์
ฉันได้เขียนการทดสอบหน่วยสำหรับวิธีการคงที่ วิธีการคงที่ใช้เวลาเพียงหนึ่งข้อโต้แย้ง ประเภทของการโต้แย้งเป็นชั้นสุดท้าย ในแง่ของรหัส: public class Utility { public static Optional&lt;String&gt; getName(Customer customer) { // method's body. } } public final class Customer { // class definition } ดังนั้นสำหรับUtilityชั้นเรียนฉันได้สร้างชั้นทดสอบUtilityTestsซึ่งฉันได้เขียนข้อสอบสำหรับวิธีนี้, getName. กรอบการทดสอบหน่วยเป็นTestNGMockitoและห้องสมุดเยาะเย้ยที่ใช้คือ ดังนั้นการทดสอบทั่วไปมีโครงสร้างดังต่อไปนี้: public class UtilityTests { @Test public void getNameTest() { // Arrange Customer customerMock = Mockito.mock(Customer.class); Mockito.when(...).thenReturn(...); // Act …

1
วิธีการทดสอบหน่วยด้วยความขบขันในองค์ประกอบ vue องค์ประกอบ API?
ฉันกำลังเขียนการทดสอบหน่วยที่มีเรื่องตลกสำหรับองค์ประกอบ API ของฉันใน vue.js. แต่ฉันไม่สามารถเข้าถึงฟังก์ชั่นในการตั้งค่า API ขององค์ประกอบ () Indicator.vue &lt;template&gt; &lt;div class="d-flex flex-column justify-content-center align-content-center"&gt; &lt;ul class="indicator-menu d-flex justify-content-center"&gt; &lt;li v-for="step in steps" :key="step"&gt; &lt;a href="#" @click="updateValue(step)" :class="activeClass(step, current)"&gt; &lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;div class="indicator-caption d-flex justify-content-center"&gt; step &lt;span&gt; {{ current }}&lt;/span&gt; from &lt;span&gt; {{ steps }}&lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;/template&gt; &lt;script …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.