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

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

9
ตัวเลือก“ สร้างการทดสอบหน่วย” อยู่ที่ไหน
ฉันได้ติดตั้ง Visual Studio 2012 Ultimate ใหม่แล้ว ฉันสร้างโครงการทดสอบด้วยโซลูชันของฉันและมีการทดสอบหน่วยเริ่มต้นบางอย่าง อย่างไรก็ตามการคลิกขวาที่เมธอดใหม่จะไม่แสดงเมนูบริบท "สร้างการทดสอบหน่วย" อีกต่อไป ดู Visual Studio 2010 Ultimate: และ Visual Studio 2012 Ultimate: ความคิดใดที่เป็นไปได้ UPDATE: โซลูชันสำหรับ Visual Studio 2012 และ 2013: Microsoft ได้รับทราบแล้วที่นี่และเสนอวิธีแก้ปัญหาอย่างเป็นทางการเพื่อแก้ไข ดาวน์โหลดติดตั้งและสนุก!

6
วิธีทดสอบส่วนขยายของโครเมี่ยม
มีวิธีที่ดีในการทำเช่นนี้? ฉันกำลังเขียนส่วนขยายที่โต้ตอบกับเว็บไซต์เป็นสคริปต์เนื้อหาและบันทึกข้อมูลโดยใช้การจัดเก็บในพื้นที่ มีเครื่องมือกรอบงาน ฯลฯ ที่ฉันสามารถใช้ทดสอบพฤติกรรมนี้ได้หรือไม่ ฉันรู้ว่ามีเครื่องมือทั่วไปสำหรับทดสอบ Javascript แต่มีพลังเพียงพอที่จะทดสอบส่วนขยายหรือไม่ การทดสอบหน่วยเป็นสิ่งที่สำคัญที่สุด แต่ฉันก็สนใจการทดสอบประเภทอื่น (เช่นการทดสอบการรวม)

14
ฉันจะทดสอบหน่วย GUI ได้อย่างไร
การคำนวณในรหัสของฉันผ่านการทดสอบเป็นอย่างดี แต่เนื่องจากมีรหัส GUI มากการครอบคลุมรหัสโดยรวมของฉันจึงต่ำกว่าที่ฉันต้องการ มีแนวทางใดบ้างเกี่ยวกับโค้ด GUI สำหรับทดสอบหน่วย? มันสมเหตุสมผลหรือไม่ ตัวอย่างเช่นมีกราฟในแอพของฉัน ฉันไม่สามารถหาวิธีการทดสอบกราฟได้โดยอัตโนมัติ ต้องใช้สายตามนุษย์ AFAIK เพื่อตรวจสอบกราฟว่าถูกต้องหรือไม่ (ฉันใช้ Java Swing)

6
ใช้จัสมินเพื่อสอดแนมฟังก์ชั่นที่ไม่มีวัตถุ
ฉันยังใหม่กับจัสมีนและเพิ่งเริ่มใช้มัน ฉันมีไฟล์ไลบรารี js ที่มีฟังก์ชั่นมากมายซึ่งไม่เกี่ยวข้องกับวัตถุใด ๆ (เช่นเป็นระดับโลก) ฉันจะไปสืบเรื่องฟังก์ชันเหล่านี้ได้อย่างไร ฉันพยายามใช้หน้าต่าง / เอกสารเป็นวัตถุ แต่สายลับไม่ทำงานแม้ว่าจะมีการเรียกใช้ฟังก์ชัน ฉันพยายามห่อด้วยวัตถุปลอมดังนี้: var fakeElement = {}; fakeElement.fakeMethod = myFunctionName; spyOn(fakeElement, "fakeMethod"); และทดสอบด้วย expect(fakeElement.fakeMethod).toHaveBeenCalled(); สิ่งนี้ไม่ได้ผลเช่นเดียวกับสายลับไม่ทำงาน

13
วิธีการทดสอบหน่วยวัตถุด้วยแบบสอบถามฐานข้อมูล
ฉันได้ยินมาว่าการทดสอบหน่วยเป็น "สุดยอด", "สุดยอดจริงๆ" และ "ทุกอย่างเป็นสิ่งที่ดี" แต่ 70% หรือมากกว่านั้นของไฟล์เกี่ยวข้องกับการเข้าถึงฐานข้อมูล (บางคนอ่านและเขียนบางคน) และฉันไม่แน่ใจว่าจะทำอย่างไร เพื่อเขียนการทดสอบหน่วยสำหรับไฟล์เหล่านี้ ฉันใช้ PHP และ Python แต่ฉันคิดว่าเป็นคำถามที่ใช้กับภาษาส่วนใหญ่ / ทุกภาษาที่ใช้การเข้าถึงฐานข้อมูล

8
ฉันจะจำลองบริการที่คืนสัญญาในการทดสอบหน่วยจัสมินของ AngularJS ได้อย่างไร
ฉันมีmyServiceสิ่งที่ใช้myOtherServiceซึ่งทำให้การโทรระยะไกลคืนสัญญา: angular.module('app.myService', ['app.myOtherService']) .factory('myService', [ myOtherService, function(myOtherService) { function makeRemoteCall() { return myOtherService.makeRemoteCallReturningPromise(); } return { makeRemoteCall: makeRemoteCall }; } ]) ในการสร้างการทดสอบหน่วยสำหรับmyServiceฉันต้องเยาะเย้ยmyOtherServiceเช่นนั้นmakeRemoteCallReturningPromiseวิธีการของมันจะให้สัญญา นี่คือวิธีที่ฉันทำ: describe('Testing remote call returning promise', function() { var myService; var myOtherServiceMock = {}; beforeEach(module('app.myService')); // I have to inject mock when calling module(), // and module() should …

11
โครงการทดสอบหน่วยสามารถโหลดไฟล์ app.config ของแอปพลิเคชันเป้าหมายได้หรือไม่
ฉันกำลังทดสอบแอปพลิเคชั่น. NET (.exe) ที่ใช้ไฟล์ app.config เพื่อโหลดคุณสมบัติการกำหนดค่า แอปพลิเคชันทดสอบหน่วยนั้นไม่มีไฟล์ app.config เมื่อฉันพยายามที่จะทดสอบหน่วยวิธีการที่ใช้ใด ๆ ของคุณสมบัติการกำหนดค่าที่พวกเขากลับnull ฉันสมมติว่านี่เป็นเพราะแอปพลิเคชันทดสอบหน่วยจะไม่โหลดในแอปพลิเคชันเป้าหมายของแอป มีวิธีการแทนที่นี้หรือฉันต้องเขียนสคริปต์เพื่อคัดลอกเนื้อหาของ app.config เป้าหมายเพื่อ app.config ท้องถิ่น? โพสต์นี้แบบถามคำถามนี้ แต่ผู้เขียนมองจากมุมที่แตกต่างกว่าฉันจริงๆ แก้ไข:ฉันควรพูดถึงว่าฉันใช้ VS08 Team System สำหรับการทดสอบหน่วยของฉัน

16
วิธีการส่งออกใน CLI ในระหว่างการดำเนินการทดสอบหน่วย PHP?
เมื่อทำการทดสอบ PHPUnit ฉันต้องการถ่ายโอนข้อมูลออกเพื่อให้ฉันสามารถดีบักสิ่งหนึ่งหรือสอง ฉันลองต่อไปนี้ (คล้ายกับตัวอย่างคู่มือ PHPUnit ); class theTest extends PHPUnit_Framework_TestCase { /** * @outputBuffering disabled */ public function testOutput() { print_r("Hello World"); print "Ping"; echo "Pong"; $out = "Foo"; var_dump($out); } } ด้วยผลลัพธ์ต่อไปนี้: PHPUnit @package_version@ by Sebastian Bergmann. . Time: 0 seconds, Memory: 3.00Mb OK (1 test, 0 assertions) …

5
หน่วยทดสอบวิธีการภายในใน VS2017 .Net Standard library
ฉันกำลังเล่นกับผู้สมัคร Release Studio 2017 ล่าสุดโดยสร้างไลบรารี. Net Standard 1.6 ฉันใช้ xUnit เพื่อทดสอบโค้ดของฉันและสงสัยว่าคุณยังสามารถทดสอบวิธีการภายในใน VS2017 ได้หรือไม่ ฉันจำได้ว่าคุณสามารถคลาส AssemblyInfo.cs บรรทัดทั้งหมดใน VS2015 ที่จะเปิดใช้งานโครงการที่ระบุเพื่อดูวิธีการภายใน [assembly:InternalsVisibleTo("MyTests")] เนื่องจากไม่มี AssemblyInfo.cs class ใน VS2017 .Net Standard project ฉันสงสัยว่าคุณยังสามารถทดสอบวิธีการภายในหน่วยได้หรือไม่?

9
ฟังก์ชั่นหลามเยาะเย้ยตามข้อโต้แย้งอินพุต
เราใช้Mockกับ python มาระยะหนึ่งแล้ว ตอนนี้เรามีสถานการณ์ที่เราต้องการจำลองฟังก์ชั่น def foo(self, my_param): #do something here, assign something to my_result return my_result โดยปกติวิธีการเยาะเย้ยนี้จะเป็น (สมมติว่าเป็นส่วนหนึ่งของวัตถุ foo) self.foo = MagicMock(return_value="mocked!") แม้ว่าฉันจะโทรหา foo () สองครั้งฉันก็สามารถใช้ได้ self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"]) ตอนนี้ฉันกำลังเผชิญสถานการณ์ที่ฉันต้องการคืนค่าคงที่เมื่อพารามิเตอร์อินพุตมีค่าเฉพาะ ถ้าสมมุติว่า "my_param" เท่ากับ "อะไรบางอย่าง" แล้วฉันต้องการคืน "my_cool_mock" ดูเหมือนว่าจะมีให้ในmockito สำหรับไพ ธ อน when(dummy).foo("something").thenReturn("my_cool_mock") ฉันค้นหาวิธีการที่จะประสบความสำเร็จกับ Mock โดยไม่ประสบความสำเร็จได้อย่างไร ความคิดใด ๆ

14
คุณจะจำลองระบบไฟล์ใน C # สำหรับการทดสอบหน่วยได้อย่างไร
วิธีการแก้ไขปัญหาการซ้อนทับแบบล้นของ Stack : git - รหัสโฮสต์ของเซิร์ฟเวอร์ไม่ได้ถูกแคช มีห้องสมุดหรือวิธีการจำลองระบบไฟล์ใน C # เพื่อเขียนการทดสอบหน่วยหรือไม่? ในกรณีปัจจุบันของฉันฉันมีวิธีการตรวจสอบว่ามีไฟล์บางไฟล์อยู่และอ่านวันที่สร้าง ฉันอาจต้องการมากกว่านั้นในอนาคต
149 c#  unit-testing  mocking 

15
Python หน่วยทดสอบกับฐานและคลาสย่อย
ขณะนี้ฉันมีการทดสอบสองสามบทซึ่งใช้ชุดการทดสอบทั่วไป นี่คือตัวอย่าง: import unittest class BaseTest(unittest.TestCase): def testCommon(self): print 'Calling BaseTest:testCommon' value = 5 self.assertEquals(value, 5) class SubTest1(BaseTest): def testSub1(self): print 'Calling SubTest1:testSub1' sub = 3 self.assertEquals(sub, 3) class SubTest2(BaseTest): def testSub2(self): print 'Calling SubTest2:testSub2' sub = 4 self.assertEquals(sub, 4) if __name__ == '__main__': unittest.main() ผลลัพธ์ของข้างต้นคือ: Calling BaseTest:testCommon .Calling BaseTest:testCommon …

14
ไม่พบไลบรารี่เมื่อใช้ CocoaPods กับการทดสอบลอจิก iOS
ฉันกำลังพยายามเขียนการทดสอบลอจิก iOS สำหรับชั้นเรียนในโครงการของฉันที่ใช้ฟังก์ชันการทำงานจากห้องสมุดบางแห่งในพอดสเปคของฉัน ฉันใช้ชุดทดสอบหน่วยมาตรฐานที่ให้ไว้ใน Xcode (ไม่ใช่การทดสอบแอปพลิเคชันเพียงทดสอบหน่วย) ตัวอย่างเช่นฉันใช้ Magical Record และฉันมีห้องสมุดนั้นเชื่อมโยงกับพอดสเปคของฉัน มันมีอยู่ในโครงการ Pods ในพื้นที่ทำงานของฉันและทำงานตามที่คาดไว้เมื่อแอปทำงานในอุปกรณ์จำลองหรือบนอุปกรณ์ เมื่อฉันพยายามที่จะเชื่อมโยงไปยังการทดสอบวัตถุที่ใช้ Magical Record แต่ฉันได้รับข้อผิดพลาด linker ที่ระบุว่ามันไม่พบตัวเลือกจาก Magical Record ฉันได้ลองอัปเดต HEADER_SEARCH_PATH ของฉันในชุดทดสอบตรรกะของฉันแล้วแม้แต่เข้ารหัสอย่างหนักไปยังไดเรกทอรีส่วนหัวที่สร้างโดย CocoaPods แต่ก็ไม่มีโชค ฉันสามารถรันการทดสอบหน่วยเทียบกับคลาสที่ไม่ได้ใช้ไลบรารี CocoaPods ได้โดยไม่มีปัญหา ฉันจะทำผิดหรือเปล่า? ฉันควรทำอย่างอื่นเพื่อให้คอมไพเลอร์ดูไลบรารี่ CocoaPods หรือไม่?

12
ฉันสามารถเขียนลงในคอนโซลในการทดสอบหน่วยได้หรือไม่ ถ้าใช่ทำไมไม่เปิดหน้าต่างคอนโซล
ฉันมีโครงการทดสอบใน Visual Studio ฉันใช้Microsoft.VisualStudio.TestTools.UnitTesting ฉันเพิ่มบรรทัดนี้ในหนึ่งในการทดสอบหน่วยของฉัน: Console.WriteLine("Some foo was very angry with boo"); Console.ReadLine(); เมื่อฉันรันการทดสอบการทดสอบจะผ่านไป แต่หน้าต่างคอนโซลจะไม่เปิดเลย มีวิธีทำให้หน้าต่างคอนโซลพร้อมใช้งานเพื่อให้สามารถโต้ตอบผ่านการทดสอบหน่วยได้หรือไม่

5
การทดสอบหน่วย ASP.NET WebApi ด้วย Request.CreateResponse
ฉันกำลังพยายามเขียนการทดสอบหน่วยสำหรับ ApiController ของฉันและประสบปัญหาบางอย่าง มีวิธีการขยายที่ดีที่เรียกว่า Request.CreateResponse ที่ช่วยได้มากในการสร้างการตอบสนอง public HttpResponseMessage Post(Product product) { var createdProduct = repo.Add(product); return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct); } มีวิธีใดในการเยาะเย้ย CreateResponse โดยไม่ใช้ mocks บางส่วนหรือใช้โดยตรงของ "HttpResponseMessage ใหม่ (... )"

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