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

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

3
__init__ สำหรับ unittest.TestCase
ฉันต้องการเพิ่มบางสิ่งในสิ่งที่unittest.TestCaseชั้นเรียนทำเมื่อเริ่มต้น แต่ฉันคิดไม่ออกว่าจะทำอย่างไร ตอนนี้ฉันกำลังทำสิ่งนี้: #filename test.py class TestingClass(unittest.TestCase): def __init__(self): self.gen_stubs() def gen_stubs(self): # Create a couple of tempfiles/dirs etc etc. self.tempdir = tempfile.mkdtemp() # more stuff here ฉันต้องการให้สร้างต้นขั้วทั้งหมดเพียงครั้งเดียวสำหรับการทดสอบทั้งชุดนี้ ฉันไม่สามารถใช้งานได้setUpClass()เนื่องจากฉันกำลังทำงานกับ Python 2.4 (ฉันไม่สามารถทำงานบน python 2.7 ได้เช่นกัน) ฉันทำอะไรผิดที่นี่? ฉันได้รับข้อผิดพลาดนี้: `TypeError: __init__() takes 1 argument (2 given)` ... และข้อผิดพลาดอื่น ๆ เมื่อฉันย้ายทั้งหมดของรหัสต้นขั้วลงเมื่อผมทำงานกับคำสั่ง__init__python -m unittest …

5
อะไรคือความแตกต่างระหว่างกรอบการทดสอบหน่วย ScalaTest และ Scala Specs
ทั้งสองเป็นกรอบการทดสอบหน่วยที่มีความสามารถ BDD (Behavior Driven Development) สำหรับ Scala ที่เขียนด้วย Scala และข้อกำหนดที่ สร้างขึ้นอาจเกี่ยวข้องกับกรอบงานScalaTest แต่สิ่งที่ Specs เสนอให้ ScalaTest ไม่มี? อะไรคือความแตกต่าง?

14
การทดสอบหน่วย Xcode ด้วย Cocoapods
ฉันเอาหัวโขกกำแพงด้วยเรื่องนี้ในช่วงสองสามวันที่ผ่านมา แต่แม้จะมีการค้นหา Google / SO / Github หลายครั้งฉันก็ไม่พบวิธีแก้ไขปัญหาที่ฉันมี! สิ่งที่ฉันพยายามทำคือสร้างการทดสอบหน่วยสำหรับแอปของฉันซึ่งใช้ประโยชน์จากพ็อด Firebase ฉันใช้ Xcode 7.3.1 และ Cocoapods 1.0.1 อัปเดต:ปัญหายังคงอยู่กับ Xcode 8.0 ด้วย podfile นี้: platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths end end ในคลาส XCTest ของฉันฉันได้รับ ไม่มีโมดูลที่จำเป็น "Firebase" …

19
ฉันจะเรียกใช้ NUnit ในโหมดดีบักจาก Visual Studio ได้อย่างไร
ฉันเพิ่งสร้างกรอบการทดสอบสำหรับ C # ที่ฉันได้ดำเนินการไป ฉันได้ตั้งค่า NUnit และโปรเจ็กต์ใหม่ภายในพื้นที่ทำงานของฉันเพื่อทดสอบส่วนประกอบ ทั้งหมดทำงานได้ดีถ้าฉันโหลดการทดสอบหน่วยจาก Nunit (v2.4) แต่ฉันมาถึงจุดที่จะมีประโยชน์มากในการทำงานในโหมดดีบักและตั้งค่าจุดพัก ฉันได้ลองทำตามคำแนะนำจากหลาย ๆ คำแนะนำซึ่งทั้งหมดแนะนำให้เปลี่ยนคุณสมบัติ 'Debug' ของโครงการทดสอบ: Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll ฉันใช้เวอร์ชันคอนโซลที่นั่น แต่ได้ลองเรียก GUI ด้วย ทั้งคู่ให้ข้อผิดพลาดเดียวกันกับฉันเมื่อฉันพยายามและเริ่มการดีบัก: Cannot start test project 'TestDSP' because the project does not contain any tests. เป็นเพราะปกติฉันโหลด \ DSP.nunit ลงใน Nunit …

1
การจำลองฟังก์ชันเพื่อเพิ่มข้อยกเว้นเพื่อทดสอบบล็อกยกเว้น
ฉันมีฟังก์ชัน ( foo) ซึ่งเรียกใช้ฟังก์ชันอื่น ( bar) หากเรียกใช้การbar()เพิ่มHttpErrorฉันต้องการจัดการเป็นพิเศษหากรหัสสถานะคือ 404 มิฉะนั้นจะเพิ่มอีกครั้ง ฉันพยายามที่จะเขียนทดสอบหน่วยบางรอบนี้ฟังก์ชั่นการเยาะเย้ยออกมาเรียกร้องให้foo bar()น่าเสียดายที่ฉันไม่สามารถรับการเรียกร้องที่เยาะเย้ยbar()ให้เพิ่มข้อยกเว้นซึ่งถูกexceptบล็อกของฉันได้ นี่คือรหัสของฉันที่แสดงถึงปัญหาของฉัน: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # …

8
วิธีการจำลองฟังก์ชันที่มีชื่อที่นำเข้าใน Jest เมื่อโมดูลไม่ถูกล็อค
ฉันมีโมดูลต่อไปนี้ที่ฉันกำลังพยายามทดสอบใน Jest: // myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } ดังที่แสดงไว้ข้างต้นก็ส่งออกฟังก์ชั่นบางชื่อและที่สำคัญการใช้งานtestFnotherFn ล้อเล่นเมื่อผมเขียนทดสอบหน่วยของฉันสำหรับtestFnผมต้องการที่จะเยาะเย้ยotherFnการทำงานเพราะผมไม่ต้องการให้เกิดข้อผิดพลาดในการส่งผลกระทบต่อการทดสอบหน่วยของฉันotherFn testFnปัญหาของฉันคือฉันไม่แน่ใจว่าวิธีที่ดีที่สุด: // myModule.test.js jest.unmock('myModule'); import { testFn, otherFn } from 'myModule'; describe('test category', () => { it('tests something about testFn', () => { // I want to …

3
ฉันจะโมควิธีการที่มีอาร์กิวเมนต์ที่เป็นทางเลือกในลายเซ็นโดยไม่ระบุอย่างชัดเจนหรือใช้โอเวอร์โหลดได้อย่างไร
รับอินเทอร์เฟซต่อไปนี้: public interface IFoo { bool Foo(string a, bool b = false); } พยายามล้อเลียนโดยใช้ Moq: var mock = new Mock<IFoo>(); mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false); ให้ข้อผิดพลาดต่อไปนี้ในเวลาคอมไพล์: แผนภูมินิพจน์ต้องไม่มีการเรียกหรือการเรียกใช้ที่ใช้อาร์กิวเมนต์ที่เป็นทางเลือก ฉันพบปัญหาข้างต้นที่ยกขึ้นเป็นการปรับปรุงในรายการปัญหาของ Moq และดูเหมือนว่าจะถูกกำหนดให้กับรุ่น 4.5 (ทุกครั้งที่เป็น) คำถามของฉันคือ: ฉันควรทำอย่างไรหากข้างต้นจะไม่ได้รับการแก้ไขในเร็ว ๆ นี้? ตัวเลือกของฉันเป็นเพียงการตั้งค่าเริ่มต้นของพารามิเตอร์ทางเลือกอย่างชัดเจนทุกครั้งที่ฉันเยาะเย้ย (ประเภทใดที่เอาชนะจุดที่ระบุไว้ตั้งแต่แรก) หรือสร้างโอเวอร์โหลดโดยไม่ต้องบูล (เช่นสิ่งที่ฉันทำ ก่อน C # 4)? หรือมีใครเจอวิธีที่ฉลาดกว่านี้ในการเอาชนะปัญหานี้หรือไม่?
119 c#  unit-testing  moq 

4
Unittest setUp / tearDown สำหรับการทดสอบหลายครั้ง
มีฟังก์ชันที่เริ่มต้น / สิ้นสุดของสถานการณ์การทดสอบหรือไม่? ฟังก์ชัน setUp และ tearDown จะเริ่มทำงานก่อน / หลังการทดสอบทุกครั้ง ฉันมักจะต้องการสิ่งนี้: class TestSequenceFunctions(unittest.TestCase): def setUpScenario(self): start() #launched at the beginning, once def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) def tearDownScenario(self): end() #launched at the end, …

30
ทำไมพวกเขาไม่สอนสิ่งเหล่านี้ในโรงเรียน? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในช่วงฤดูร้อนฉันโชคดีพอที่จะเข้าสู่ Google Summer of Code ฉันได้เรียนรู้มากมาย (อาจจะมากกว่าที่ฉันเรียนมาจากผลรวมของการเรียนในมหาวิทยาลัยทั้งหมด) ฉันสงสัยจริงๆว่าทำไมพวกเขาไม่สอนบางสิ่งที่ฉันเรียนรู้เร็วกว่านี้ในโรงเรียน หากต้องการชื่อไม่กี่: การทดสอบหน่วย การควบคุมเวอร์ชัน การพัฒนาที่คล่องตัว สำหรับฉันแล้วดูเหมือนว่าพวกเขาใช้เวลาส่วนใหญ่ในการสอนสิ่งอื่น ๆ เช่นโครงสร้างข้อมูลและอัลกอริทึมล่วงหน้า ในขณะที่ฉันยังคิดว่าสิ่งเหล่านี้สำคัญมากที่จะต้องเรียนรู้ตั้งแต่เนิ่นๆทำไมพวกเขาไม่สอนสามคนนี้ให้มากกว่านี้ก่อนหน้าพวกเขาล่ะ หรือเป็นแค่โรงเรียนของฉันที่ไม่ได้สอนเรื่องนี้มากนัก? อย่าเข้าใจฉันผิดฉันไม่คิดว่ามหาวิทยาลัยจะสอนแฟชั่นการเขียนโปรแกรมที่ทันสมัยที่สุดเสมอไป แต่อาจารย์ของฉันไม่ควรสอนฉันอย่างอื่นนอกจาก "วาดแผนภาพก่อนเริ่มเขียนโค้ด"

3
การแยกคลาส JUnit ออกเป็นชุดทดสอบพิเศษ?
ฉันเรียนรู้แนวคิดการพัฒนาทดสอบขับเคลื่อนผ่านการอ่านบทความช่าง (คลิกช่างภายใต้ตามกระทู้ ) แนะนำไว้ในคำตอบสำหรับคำถามของฉันก่อนหน้า"โครงการตัวอย่างสำหรับการเรียนรู้ JUnit และวิศวกรรมซอฟต์แวร์ที่เหมาะสม" โดนใจสุด ๆ ! แต่ตอนนี้ฉันอยากจะนั่งลงและลองด้วยตัวเอง ฉันมีคำถามที่หวังว่าจะต้องการเพียงคำตอบง่ายๆ คุณจัดชั้นเรียนทดสอบ JUnit และรหัสจริงของคุณอย่างไร? ฉันกำลังพูดถึงโครงสร้างแพ็คเกจเป็นหลัก แต่แนวคิดอื่น ๆ ของโน้ตก็จะเป็นประโยชน์เช่นกัน คุณใส่คลาสทดสอบใน org.myname.project.test. * และโค้ดปกติใน org.myname.project. * หรือไม่ คุณจัดชั้นเรียนทดสอบควบคู่ไปกับชั้นเรียนปกติหรือไม่? คุณชอบที่จะนำหน้าชื่อชั้นเรียนด้วย Test มากกว่าคำต่อท้ายหรือไม่? ฉันรู้ว่าสิ่งนี้ดูเหมือนจะเป็นเรื่องที่ฉันไม่ควรกังวลในเร็ว ๆ นี้ แต่ฉันเป็นคนที่มีองค์กรเป็นศูนย์กลาง ฉันเกือบจะเป็นคนที่ใช้เวลามากขึ้นในการหาวิธีการเพื่อติดตามสิ่งที่ต้องทำแทนที่จะทำสิ่งต่างๆให้สำเร็จ และฉันมีโปรเจ็กต์ที่แบ่งเป็นแพ็คเกจอย่างเรียบร้อย แต่โปรเจ็กต์กลายเป็นเรื่องยุ่งเหยิง แทนที่จะพยายาม refactor ทุกอย่างและเขียนการทดสอบฉันต้องการเริ่มต้นใหม่ทดสอบก่อนและทั้งหมด แต่ก่อนอื่นฉันต้องรู้ว่าการทดสอบของฉันไปถึงไหน แก้ไข:ฉันลืม Maven ไปเลย แต่ดูเหมือนว่าพวกคุณส่วนใหญ่จะใช้มัน! ในอดีตฉันมีกรณีการใช้งานเฉพาะที่ Maven ทำลายฉันอย่างสมบูรณ์ แต่ Ant ให้ความยืดหยุ่นที่ฉันต้องการดังนั้นฉันจึงยึดติดกับ …
118 java  unit-testing  junit 

10
กรองรายงานความครอบคลุมของ JaCoCo ด้วย Gradle
ปัญหา: ฉันมีโครงการกับ จาโคโค่ และฉันต้องการกรองคลาสและ / หรือแพ็คเกจบางอย่าง เอกสารที่เกี่ยวข้อง: ฉันได้อ่านเอกสารดังต่อไปนี้: เป็นทางการ จาโคโค่เว็บไซต์: http://www.eclemma.org/jacoco/index.html เป็นทางการ จาโคโค่ เอกสารสำหรับ ไล่สี: https://gradle.org/docs/current/userguide/jacoco_plugin.html เป็นทางการ จาโคโค่ Githubปัญหาเกี่ยวกับการรายงานข่าว: https://github.com/jacoco/jacoco/wiki/FilteringOptions https://github.com/jacoco/jacoco/issues/14 ลิงค์ StackOverflow ที่เกี่ยวข้อง: JaCoCo & Gradle - ตัวเลือกการกรอง (ไม่มีคำตอบ) ไม่รวมแพ็คเกจจากรายงาน Jacoco โดยใช้ Sonarrunner และ Gradle (ไม่ใช้ไฟล์โซนาร์) JaCoCo - ไม่รวม JSP จากรายงาน (ดูเหมือนว่าจะใช้ได้กับมาเวน, ฉันใช้ ไล่สี) การกำหนดค่า Maven Jacoco - ไม่รวมคลาส …

17
TDD เทียบกับการทดสอบหน่วย [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ บริษัท ของฉันค่อนข้างใหม่สำหรับหน่วยทดสอบโค้ดของเรา ฉันอ่านเกี่ยวกับ TDD และการทดสอบหน่วยมาระยะหนึ่งแล้วและฉันมั่นใจในคุณค่าของมัน ฉันพยายามที่จะโน้มน้าวทีมของเราว่า TDD คุ้มค่ากับความพยายามในการเรียนรู้และเปลี่ยนความคิดของเราเกี่ยวกับวิธีที่เราเขียนโปรแกรม แต่มันเป็นการต่อสู้ ซึ่งนำฉันไปสู่คำถามของฉัน มีหลายคนในชุมชน TDD ที่เคร่งศาสนามากเกี่ยวกับการเขียนแบบทดสอบแล้วก็โค้ด (และฉันก็อยู่ด้วย) แต่สำหรับทีมที่กำลังต่อสู้กับ TDD การประนีประนอมยังคงก่อให้เกิดประโยชน์เพิ่มเติมหรือไม่? ฉันอาจประสบความสำเร็จในการให้ทีมเขียนการทดสอบหน่วยเมื่อเขียนโค้ดแล้ว (อาจเป็นข้อกำหนดสำหรับการตรวจสอบโค้ด) และสมมติฐานของฉันก็คือยังมีคุณค่าในการเขียนการทดสอบหน่วยเหล่านั้น อะไรคือวิธีที่ดีที่สุดในการนำทีมที่ดิ้นรนเข้าสู่ TDD และการล้มเหลวนั้นยังคุ้มค่าที่จะเขียนการทดสอบหน่วยแม้ว่าจะเป็นหลังจากเขียนโค้ดแล้ว? แก้ไข สิ่งที่ฉันได้รับจากสิ่งนี้คือสิ่งสำคัญสำหรับเราที่จะต้องเริ่มการทดสอบหน่วยซึ่งอยู่ที่ไหนสักแห่งในกระบวนการเข้ารหัส สำหรับผู้ที่อยู่ในทีมที่รับแนวคิดนี้ให้เริ่มขยับไปสู่ ​​TDD มากขึ้นและทดสอบก่อน ขอบคุณสำหรับข้อมูลของทุกคน ติดตาม เราเพิ่งเริ่มโครงการขนาดเล็กใหม่และทีมงานส่วนน้อยใช้ TDD ส่วนที่เหลือเขียนการทดสอบหน่วยหลังรหัส หลังจากที่เราสรุปส่วนการเข้ารหัสของโครงการแล้วการทดสอบหน่วยการเขียนเหล่านั้นหลังจากโค้ดนั้นรู้สึกประหลาดใจที่เห็นโค้ดเดอร์ TDD ทำไปแล้วและมีโค้ดที่มั่นคงกว่า มันเป็นวิธีที่ดีในการเอาชนะผู้ที่คลางแคลงใจ เรายังคงมีความเจ็บปวดมากมายรออยู่ข้างหน้า แต่การต่อสู้ของเจตจำนงดูเหมือนจะจบลงแล้ว ขอบคุณสำหรับทุกคนที่ให้คำแนะนำ!

6
“ Stub” คืออะไร?
ดังนั้นตามปณิธานปีใหม่ของฉันเพื่อเข้าสู่ TDD มากขึ้นตอนนี้ฉันเริ่มทำงานกับRhino Mocksมากขึ้น สิ่งหนึ่งที่ฉันกระตือรือร้นที่จะทำคือการทำให้แน่ใจว่าฉันเข้าใจสิ่งที่ฉันกำลังทำอยู่ดังนั้นฉันจึงต้องการตรวจสอบความเข้าใจของฉันเกี่ยวกับสิ่งที่ฉันได้เห็นจนถึงตอนนี้ (และฉันคิดว่ามันจะดีถ้าได้ขึ้นมาที่นี่ในฐานะ ทรัพยากร). "Stub" คืออะไร?


11
วิธีที่ดีในการเขียนทับ DateTime ตอนนี้อยู่ระหว่างการทดสอบคืออะไร?
ฉันมีรหัส (C #) ที่ใช้วันที่ของวันนี้เพื่อคำนวณสิ่งต่างๆในอนาคตได้อย่างถูกต้อง ถ้าฉันใช้วันที่ของวันนี้ในการทดสอบฉันต้องคำนวณซ้ำในการทดสอบซึ่งไม่ถูกต้อง วิธีใดดีที่สุดในการตั้งค่าวันที่เป็นค่าที่ทราบภายในการทดสอบเพื่อให้ฉันสามารถทดสอบว่าผลลัพธ์เป็นค่าที่ทราบได้

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