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

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

30
คุณรู้ได้อย่างไรว่าต้องทดสอบอะไรเมื่อเขียนแบบทดสอบหน่วย? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่? อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ การใช้ C # ฉันต้องการคลาสUserที่มีชื่อผู้ใช้รหัสผ่านแฟล็กที่ใช้งานชื่อนามสกุลชื่อเต็ม ฯลฯ ควรมีวิธีการพิสูจน์ตัวตนและบันทึกผู้ใช้ ฉันเพิ่งเขียนแบบทดสอบสำหรับวิธีการนี้หรือไม่? และฉันต้องกังวลเกี่ยวกับการทดสอบคุณสมบัติหรือไม่เนื่องจากเป็น. Net's getter and setters?
127 c#  unit-testing  tdd 

12
SimpleTest กับ PHPunit
ฉันสงสัยว่าใครก็ตามที่มีประสบการณ์ในทั้งสองสิ่งนี้สามารถให้ความกระจ่างเกี่ยวกับความแตกต่างที่สำคัญระหว่างทั้งสองได้หรือไม่? ความแข็งแรงเฉพาะของแต่ละข้อที่เหมาะสำหรับกรณีใด ๆ ?

11
มีหลักฐานยากของ ROI ของการทดสอบหน่วยหรือไม่?
การทดสอบหน่วยฟังดูดีสำหรับฉัน แต่ฉันไม่แน่ใจว่าควรใช้เวลาเรียนรู้มันจริงๆเว้นแต่จะสามารถโน้มน้าวใจคนอื่นได้ว่ามีคุณค่ามาก ฉันต้องโน้มน้าวโปรแกรมเมอร์คนอื่น ๆ และที่สำคัญกว่านั้นก็คือตัวนับถั่วในการจัดการว่าเวลาพิเศษทั้งหมดที่ใช้ในการเรียนรู้กรอบการทดสอบการเขียนแบบทดสอบการอัปเดตให้ทันสมัย ​​ฯลฯ จะจ่ายเองแล้วบางส่วน มีหลักฐานอะไร มีใครพัฒนาซอฟต์แวร์เดียวกันกับสองทีมแยกกันจริง ๆ โดยทีมหนึ่งใช้การทดสอบหน่วยและอีกทีมหนึ่งไม่ได้และเปรียบเทียบผลลัพธ์ ฉันสงสัยมัน. ฉันควรจะแก้ตัวด้วยการ "ค้นหาในอินเทอร์เน็ตทุกคนพูดถึงเรื่องนี้จึงต้องเป็นสิ่งที่ถูกต้อง" หรือไม่ ที่ไหนคือหลักฐานที่ยากที่จะโน้มน้าวให้ฆราวาสเชื่อว่าการทดสอบหน่วยนั้นคุ้มค่ากับความพยายาม?
127 unit-testing  tdd 

7
ฉันจะจำลองการอ้างอิงสำหรับการทดสอบหน่วยใน RequireJS ได้อย่างไร
ฉันมีโมดูล AMD ที่ฉันต้องการทดสอบ แต่ฉันต้องการจำลองการอ้างอิงแทนการโหลดการอ้างอิงจริง ฉันใช้ requirejs และรหัสสำหรับโมดูลของฉันมีลักษณะดังนี้: define(['hurp', 'durp'], function(Hurp, Durp) { return { foo: function () { console.log(Hurp.beans) }, bar: function () { console.log(Durp.beans) } } } ฉันจะเยาะเย้ยออกhurpและdurpเพื่อให้ฉันได้อย่างมีประสิทธิภาพการทดสอบหน่วย?

20
เปรียบเทียบความเท่าเทียมกันระหว่างสองวัตถุใน NUnit
ฉันพยายามยืนยันว่าวัตถุหนึ่ง "เท่ากับ" กับวัตถุอื่น อ็อบเจ็กต์เป็นเพียงอินสแตนซ์ของคลาสที่มีคุณสมบัติสาธารณะมากมาย มีวิธีง่ายๆในการให้ NUnit ยืนยันความเท่าเทียมกันตามคุณสมบัติหรือไม่? นี่เป็นวิธีแก้ปัญหาปัจจุบันของฉัน แต่ฉันคิดว่าอาจมีบางอย่างที่ดีกว่า: Assert.AreEqual(LeftObject.Property1, RightObject.Property1) Assert.AreEqual(LeftObject.Property2, RightObject.Property2) Assert.AreEqual(LeftObject.Property3, RightObject.Property3) ... Assert.AreEqual(LeftObject.PropertyN, RightObject.PropertyN) สิ่งที่ฉันต้องการจะเป็นไปในจิตวิญญาณเดียวกันกับ CollectionEquivalentConstraint โดยที่ NUnit ตรวจสอบว่าเนื้อหาของสองคอลเลคชันเหมือนกัน

6
Junit: แยกการทดสอบการรวมและการทดสอบหน่วย
ฉันได้รับการทดสอบ Junit มาเป็นจำนวนมาก แต่การทดสอบเหล่านี้ (นอกเหนือจากการทดสอบส่วนใหญ่ไม่ได้ผล) เป็นส่วนผสมของการทดสอบหน่วยจริงและการทดสอบการรวม (ต้องใช้ระบบภายนอกฐานข้อมูล ฯลฯ ) ดังนั้นฉันจึงพยายามคิดหาวิธีแยกพวกมันออกจากกันเพื่อที่ฉันจะได้รันการทดสอบหน่วยได้อย่างรวดเร็วและการทดสอบการรวมหลังจากนั้น ตัวเลือกคือ .. แยกเป็นไดเรกทอรีแยกต่างหาก ย้ายไปที่ Junit4 (จาก v3) และใส่คำอธิบายประกอบคลาสเพื่อแยกคลาส ใช้หลักการตั้งชื่อไฟล์เพื่อบอกว่าคลาสคืออะไรเช่น AdapterATest และ AdapterAIntergrationTest 3 มีปัญหาว่า Eclipse มีตัวเลือก "เรียกใช้การทดสอบทั้งหมดในโครงการ / แพ็คเกจหรือโฟลเดอร์ที่เลือก" ดังนั้นจึงยากมากที่จะเรียกใช้การทดสอบการรวมระบบ 2: เสี่ยงที่นักพัฒนาอาจเริ่มเขียนการทดสอบการรวมในชั้นเรียนทดสอบหน่วยและมันก็ยุ่งเหยิง 1: ดูเหมือนจะเป็นทางออกที่ดีที่สุด แต่ลำไส้ของฉันบอกว่าต้องมีทางออกที่ดีกว่านี้ นั่นคือคำถามของฉันคุณจะแยกการทดสอบการรวมและการทดสอบหน่วยที่เหมาะสมได้อย่างไร

10
วิธีกระจายการทดสอบหน่วย django ผ่านไฟล์หลายไฟล์
ฉันมีแอปพลิเคชัน python-django ฉันกำลังใช้กรอบการทดสอบหน่วย การทดสอบจะจัดเรียงในไฟล์ "tests.py" ในไดเร็กทอรีโมดูล ฉันกำลังทำการทดสอบผ่าน ./manage.py test app ตอนนี้ .. tests.pyไฟล์จะได้รับค่อนข้างใหญ่ / ซับซ้อน / ยุ่ง ฉันต้องการแยกtests.pyออกเป็นชุดการทดสอบย่อย ๆ ... อย่างไร?

10
วิธีเริ่มทำงานกับ GTest และ CMake
ฉันเพิ่งถูกขายโดยใช้ CMake สำหรับการรวบรวมโปรเจ็กต์ C ++ ของฉันและตอนนี้ต้องการเริ่มเขียนการทดสอบหน่วยสำหรับรหัสของฉัน ฉันตัดสินใจที่จะใช้ยูทิลิตี้ Google Test เพื่อช่วยในเรื่องนี้ แต่ต้องการความช่วยเหลือในการเริ่มต้นใช้งาน ทุกวันผมได้อ่านคำแนะนำต่างๆและตัวอย่าง ได้แก่รองพื้นการแนะนำที่ IBMและคำถามบางอย่างเกี่ยวกับ SO ( ที่นี่และที่นี่ ) เช่นเดียวกับแหล่งข้อมูลอื่น ๆ ที่ฉันติดตามของหาย ฉันรู้ว่ามีอะไรมากมายที่นั่น แต่ฉันก็ยังคงประสบปัญหา ขณะนี้ฉันกำลังพยายามใช้การทดสอบขั้นพื้นฐานที่สุดเพื่อยืนยันว่าฉันได้รวบรวม / ติดตั้ง gtest ถูกต้องแล้วและไม่ได้ผล ไฟล์ต้นฉบับเดียว (testgtest.cpp) ถูกนำมาจากคำตอบก่อนหน้านี้เกือบทั้งหมด: #include <iostream> #include "gtest/gtest.h" TEST(sample_test_case, sample_test) { EXPECT_EQ(1, 1); } และ CMakeLists.txt ที่เกี่ยวข้องของฉันมีดังนี้: cmake_minimum_required(VERSION 2.6) project(basic_test) # Setup testing …

8
จะเรียกใช้ฐานข้อมูลทดสอบของ Django เฉพาะในหน่วยความจำได้อย่างไร
การทดสอบหน่วย Django ของฉันใช้เวลาดำเนินการนานดังนั้นฉันจึงกำลังมองหาวิธีที่จะเร่งความเร็วนั้น ฉันกำลังพิจารณาติดตั้งSSDแต่ฉันรู้ว่ามีข้อเสียเช่นกัน แน่นอนว่ามีบางสิ่งที่ฉันสามารถทำได้กับโค้ดของฉัน แต่ฉันกำลังมองหาการแก้ไขโครงสร้าง แม้แต่การเรียกใช้การทดสอบเพียงครั้งเดียวก็ทำได้ช้าเนื่องจากต้องสร้างฐานข้อมูลใหม่ / ย้ายไปทางทิศใต้ทุกครั้ง นี่คือความคิดของฉัน ... เนื่องจากฉันรู้ว่าฐานข้อมูลการทดสอบมักจะค่อนข้างเล็กทำไมฉันไม่สามารถกำหนดค่าระบบให้เก็บฐานข้อมูลการทดสอบทั้งหมดไว้ใน RAM ได้เสมอไป อย่าแตะดิสก์เลย ฉันจะกำหนดค่านี้ใน Django ได้อย่างไร ฉันต้องการใช้MySQL ต่อไปเพราะนั่นคือสิ่งที่ฉันใช้ในการผลิต แต่ถ้าSQLite 3 หรืออย่างอื่นทำให้สิ่งนี้ง่ายฉันจะไปทางนั้น SQLite หรือ MySQL มีตัวเลือกให้ทำงานในหน่วยความจำทั้งหมดหรือไม่? ควรกำหนดค่าดิสก์ RAM แล้วกำหนดค่าฐานข้อมูลทดสอบเพื่อจัดเก็บข้อมูลที่นั่น แต่ฉันไม่แน่ใจว่าจะบอกให้ Django / MySQL ใช้ไดเร็กทอรีข้อมูลอื่นสำหรับฐานข้อมูลบางอย่างได้อย่างไรโดยเฉพาะอย่างยิ่งเนื่องจากมันถูกลบไปเรื่อย ๆ และสร้างขึ้นใหม่ในแต่ละครั้ง (ฉันใช้ Mac FWIW)

2
Python Mocking ฟังก์ชันจากโมดูลที่นำเข้า
ฉันต้องการเข้าใจวิธี@patchการทำงานจากโมดูลที่นำเข้า นี่คือที่ที่ฉันมาไกลมาก app / mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program..." test_method() app / my_module / __ init__.py: def get_user_name(): return "Unmocked User" การทดสอบ / mock-test.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): …

8
วิธีการจำลอง ConfigurationManager.AppSettings ด้วย moq
ฉันติดอยู่ที่จุดนี้ของรหัสที่ฉันไม่รู้ว่าจะล้อเลียนอย่างไร: ConfigurationManager.AppSettings["User"]; ฉันต้องเยาะเย้ย ConfigurationManager แต่ฉันไม่ได้มีเงื่อนงำผมใช้ขั้นต่ำ มีใครให้คำแนะนำได้บ้าง ขอบคุณ!
124 c#  unit-testing  moq 

5
การเปรียบเทียบระหว่าง Mockito กับ JMockit - ทำไม Mockito ถึงได้รับการโหวตว่าดีกว่า JMockit? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ผมตรวจสอบที่เยาะเย้ยกรอบที่จะใช้สำหรับโครงการของฉันและได้แคบลงไปJMockitและMockito ฉันสังเกตว่าMockitoได้รับการโหวตให้เป็น " กรอบงานจำลองที่ดีที่สุดสำหรับ Java " ใน Stackoverflow ในการเปรียบเทียบในลักษณะJMockitของ ' Mocking เครื่องมือเปรียบเทียบเมทริกซ์ ' ก็ปรากฏว่าJMockitมีคุณสมบัติที่แตกต่างกันหลาย ใครมีข้อมูลเฉพาะ (ไม่แสดงความคิดเห็น) เกี่ยวกับสิ่งที่Mockitoสามารถทำได้ซึ่งไม่สามารถทำได้ด้วยJMockitและในทางกลับกัน?


11
ฉันจะรับ“ Copy to Output Directory” เพื่อทำงานกับ Unit Tests ได้อย่างไร?
เมื่อฉันสร้างโครงการทดสอบหน่วยก่อนที่จะดำเนินการทดสอบผลลัพธ์การทดสอบจะถูกคัดลอกไปยังโฟลเดอร์ TestResults จากนั้นการทดสอบจะดำเนินการ ปัญหาที่ฉันพบคือไม่ใช่ทุกไฟล์ในไดเร็กทอรี Debug / bin ที่ถูกคัดลอกไปยังโปรเจ็กต์ TestResults ฉันจะรับไฟล์ที่คัดลอกไปยังไดเร็กทอรี Debug / bin เพื่อคัดลอกไปยังโฟลเดอร์ TestResults ได้อย่างไร

6
ฉันจะนำเข้าข้อยกเว้น Django DoesNotExist ได้อย่างไร
ฉันกำลังพยายามสร้าง UnitTest เพื่อตรวจสอบว่าวัตถุถูกลบไปแล้ว from django.utils import unittest def test_z_Kallie_can_delete_discussion_response(self): ...snip... self._driver.get("http://localhost:8000/questions/3/want-a-discussion") self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>')) ฉันได้รับข้อผิดพลาดเรื่อย ๆ : DoesNotExist: Answer matching query does not exist.

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