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

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

21
Mocking HttpClient ในการทดสอบหน่วย
ฉันมีปัญหาบางอย่างในการพยายามตัดรหัสเพื่อใช้ในการทดสอบหน่วย ประเด็นคือเรื่องนี้ ฉันมีอินเทอร์เฟซ IHttpHandler: public interface IHttpHandler { HttpClient client { get; } } และคลาสที่ใช้ HttpHandler: public class HttpHandler : IHttpHandler { public HttpClient client { get { return new HttpClient(); } } } จากนั้นคลาส Connection ซึ่งใช้ simpleIOC เพื่อฉีดการใช้งานไคลเอ็นต์: public class Connection { private IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { …
112 c#  unit-testing  moq 

7
โครงการของคุณไม่ได้อ้างอิงกรอบงาน“ .NETFramework, Version = v4.6.2” เพิ่มการอ้างอิงถึง“ .NETFramework, Version = v4.6.2” ใน“ TargetFrameworks”
ฉันไม่สามารถทำการทดสอบหน่วยของฉันได้ ฉันมีข้อผิดพลาดถัดไป: โครงการของคุณไม่ได้อ้างอิงเฟรมเวิร์ก ".NETFramework, Version = v4.6.2" เพิ่มการอ้างอิงถึง ".NETFramework, Version = v4.6.2" ในคุณสมบัติ "TargetFrameworks" ของไฟล์โครงการของคุณจากนั้นเรียกใช้ NuGet restore อีกครั้ง ในapp.config: <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/> </startup> ในโครงการ> คุณสมบัติ> แอปพลิเคชัน> TargetFramework (.NET Framework 4.6.2) จะแก้ไขได้อย่างไร?

2
mockito เมื่อ () การเรียกใช้ทำงานอย่างไร
ให้คำสั่ง Mockito ต่อไปนี้: when(mock.method()).thenReturn(someValue); Mockito ไปเกี่ยวกับการสร้างสิ่งที่เป็นพร็อกซีสำหรับการจำลองอย่างไรเนื่องจากคำสั่ง mock.method () จะส่งค่าส่งคืนไปยังเมื่อ ()? ฉันจินตนาการว่าสิ่งนี้ใช้ CGLib บางอย่าง แต่สนใจที่จะรู้ว่าวิธีนี้ทำได้อย่างไร

6
ฉันจะทดสอบการตั้งค่าโดยใช้แพ็คเกจการทดสอบใน Go ได้อย่างไร
ฉันจะประมวลผลการตั้งค่าการทดสอบโดยรวมซึ่งกำหนดขั้นตอนสำหรับการทดสอบทั้งหมดเมื่อใช้แพ็คเกจการทดสอบได้อย่างไร ดังตัวอย่างใน Nunit มี[SetUp]แอตทริบิวต์ [TestFixture] public class SuccessTests { [SetUp] public void Init() { /* Load test data */ } }
111 unit-testing  go 

3
ยืนยันข้อยกเว้นโดยใช้ XUnit
ฉันเป็นมือใหม่สำหรับ XUnit และ Moq ฉันมีวิธีการที่ใช้สตริงเป็นอาร์กิวเมนต์วิธีจัดการข้อยกเว้นโดยใช้ XUnit [Fact] public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException() { //arrange ProfileRepository profiles = new ProfileRepository(); //act var result = profiles.GetSettingsForUserID(""); //assert //The below statement is not working as expected. Assert.Throws<ArgumentException>(() => profiles.GetSettingsForUserID("")); } วิธีการทดสอบ public IEnumerable<Setting> GetSettingsForUserID(string userid) { if (string.IsNullOrWhiteSpace(userid)) throw new ArgumentException("User Id Cannot be null"); …
111 c#  unit-testing  xunit 

7
ปิดใช้งานการย้ายข้อมูลเมื่อรันการทดสอบหน่วยใน Django 1.7
Django 1.7แนะนำการโยกย้ายฐานข้อมูล เมื่อเรียกใช้การทดสอบหน่วยใน Django 1.7 จะบังคับให้มีการโยกย้ายซึ่งใช้เวลานาน ดังนั้นฉันต้องการข้ามการย้าย django และสร้างฐานข้อมูลในสถานะสุดท้าย ฉันรู้ว่าการเพิกเฉยต่อการย้ายข้อมูลอาจเป็นแนวทางปฏิบัติที่ไม่ดีเนื่องจากส่วนนั้นจะไม่มีการทดสอบโค้ด แต่นั่นไม่ใช่กรณี: ฉันกำลังเรียกใช้การย้ายข้อมูลทั้งหมดในเซิร์ฟเวอร์ทดสอบ CI (เจนกินส์) ฉันต้องการข้ามการย้ายข้อมูลในการทดสอบในพื้นที่เท่านั้นซึ่งความเร็วมีความสำคัญ บริบทบางส่วน: จนถึง Django 1.6เมื่อใช้ South ฉันใช้การตั้งค่าSOUTH_TESTS_MIGRATE : ตามค่าเริ่มต้นคำสั่ง syncdb ของ South จะใช้การย้ายข้อมูลด้วยหากทำงานในโหมดไม่โต้ตอบซึ่งรวมถึงเวลาที่คุณกำลังทำการทดสอบคำสั่งจะเรียกใช้การย้ายข้อมูลทุกครั้งที่คุณเรียกใช้การทดสอบ หากคุณต้องการให้นักวิ่งทดสอบใช้ syncdb แทนการโอนย้ายตัวอย่างเช่นหากการย้ายข้อมูลของคุณใช้เวลานานเกินไปในการใช้งานให้ตั้งค่า SOUTH_TESTS_MIGRATE = False ใน settings.py อย่างไรก็ตามSyncDBไม่อยู่อีกต่อไปตอนนี้ก็โยกย้าย และจาก Django 1.8ฉันจะใช้พารามิเตอร์--keepdb : ตัวเลือก --keepdb สามารถใช้เพื่อรักษาฐานข้อมูลการทดสอบระหว่างการทดสอบ สิ่งนี้มีข้อดีของการข้ามทั้งการดำเนินการสร้างและทำลายซึ่งช่วยลดเวลาในการเรียกใช้การทดสอบได้มากโดยเฉพาะอย่างยิ่งการทดสอบในชุดทดสอบขนาดใหญ่ หากไม่มีฐานข้อมูลทดสอบฐานข้อมูลจะถูกสร้างขึ้นในการรันครั้งแรกจากนั้นจะคงไว้สำหรับการรันครั้งต่อ ๆ ไป การย้ายข้อมูลที่ไม่ได้ใช้จะถูกนำไปใช้กับฐานข้อมูลทดสอบก่อนที่จะเรียกใช้ชุดทดสอบ ดังนั้นคำถามนี้ จำกัด …

7
ฉันจะ "นอนหลับ" โปรแกรม Dart ได้อย่างไร
ฉันต้องการจำลองการเรียกใช้บริการเว็บแบบอะซิงโครนัสในแอปพลิเคชัน Dart ของฉันเพื่อทำการทดสอบ ในการจำลองการสุ่มของการโทรจำลองเหล่านี้ที่ตอบสนอง (อาจไม่เป็นระเบียบ) ฉันต้องการตั้งโปรแกรมให้ม็อคของฉันรอ (นอนหลับ) ในช่วงเวลาหนึ่งก่อนที่จะคืน 'อนาคต' ฉันจะทำเช่นนี้ได้อย่างไร?

12
ฉันจะสร้างการทดสอบใน Android Studio ได้อย่างไร
เพิ่งดาวน์โหลด Android Studio ซึ่งอิงจาก Intellij Idea จะสร้างการทดสอบได้อย่างไร? ฉันสังเกตเห็นว่ามีตัวเลือกสำหรับสร้างโมดูลทดสอบ แต่ดูเหมือนจะไม่ทำอะไรเลยเพียงสร้างโปรเจ็กต์ใหม่ด้วย src ฉันยังลองกดแป้นลัด CTRL + AlT + T ซึ่งอนุญาตให้สร้างการทดสอบหน่วยในชั้นเรียนที่มีอยู่ แต่ดูเหมือนว่าต้องการวางไว้ในโครงการปัจจุบัน แน่นอนว่านี่ไม่ได้ช่วยอะไรกับ TDD ใครมีประสบการณ์ที่นี่บ้าง?

4
วิธีที่ดีที่สุดในการทดสอบการสืบค้น SQL [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันประสบปัญหาในกรณีที่เรามีการสืบค้น SQL ที่ซับซ้อนอยู่เสมอโดยมีข้อผิดพลาด โดยพื้นฐานแล้วสิ่งนี้ส่งผลให้ส่งอีเมลไปยังลูกค้าที่ไม่ถูกต้องและ 'ปัญหา' อื่น ๆ เช่นนั้น ประสบการณ์ของทุกคนในการสร้างแบบสอบถาม SQL เช่นนั้นคืออะไร? เรากำลังสร้างข้อมูลกลุ่มประชากรตามรุ่นใหม่ทุกสัปดาห์ ดังนั้นนี่คือความคิดและข้อ จำกัด บางประการของฉัน: การสร้างข้อมูลทดสอบในขณะที่สิ่งนี้จะพิสูจน์ได้ว่าเรามีข้อมูลที่ถูกต้องทั้งหมด แต่ก็ไม่ได้บังคับใช้การยกเว้นความผิดปกติในการผลิต นั่นเป็นข้อมูลที่ถือว่าผิดในปัจจุบัน แต่อาจจะถูกต้องเมื่อ 10 ปีก่อน มันไม่ได้รับการจัดทำเป็นเอกสารดังนั้นเราจึงรู้หลังจากที่ดึงข้อมูลแล้วเท่านั้น สร้างแผนภาพเวนน์และแผนที่ข้อมูลดูเหมือนว่าจะเป็นวิธีที่ดีในการทดสอบการออกแบบแบบสอบถาม แต่ก็ไม่ได้รับประกันว่าการนำไปใช้นั้นถูกต้อง ทำให้นักพัฒนาวางแผนล่วงหน้าและคิดถึงสิ่งที่เกิดขึ้นขณะเขียน ขอบคุณสำหรับข้อมูลที่คุณสามารถให้กับปัญหาของฉัน
109 sql  unit-testing 

5
ฉันจะปิดอินสแตนซ์ของ ExpressJS โดยทางโปรแกรมเพื่อทดสอบได้อย่างไร
ฉันกำลังพยายามหาวิธีปิดอินสแตนซ์ของ Express โดยพื้นฐานแล้วฉันต้องการการผกผันของการ.listen(port)โทร - ฉันจะทำให้เซิร์ฟเวอร์ Express หยุดฟังปล่อยพอร์ตและปิดอย่างหมดจดได้อย่างไร ฉันรู้ว่านี่อาจเป็นคำถามแปลก ๆ ดังนั้นนี่คือบริบท อาจมีวิธีอื่นในการเข้าถึงสิ่งนี้และฉันคิดผิด ฉันกำลังพยายามตั้งค่ากรอบการทดสอบสำหรับแอพ socket.io/nodejs ของฉัน มันเป็นแอพหน้าเดียวดังนั้นในสคริปต์การทดสอบของฉัน (ฉันใช้Mochaแต่นั่นไม่สำคัญจริงๆ) ฉันต้องการที่จะสามารถเริ่มต้นเซิร์ฟเวอร์เรียกใช้การทดสอบกับเซิร์ฟเวอร์จากนั้นปิดเซิร์ฟเวอร์ ฉันสามารถหลีกเลี่ยงสิ่งนี้ได้โดยสมมติว่าเซิร์ฟเวอร์เปิดอยู่ก่อนที่การทดสอบจะเริ่มขึ้นหรือโดยการทดสอบอย่างใดอย่างหนึ่งเริ่มเซิร์ฟเวอร์และการทดสอบครั้งต่อ ๆ ไปจะถือว่าขึ้น แต่มันยุ่งมาก ฉันต้องการให้ไฟล์ทดสอบแต่ละไฟล์เริ่มต้นอินสแตนซ์เซิร์ฟเวอร์ด้วยการตั้งค่าที่เหมาะสมแล้วปิดอินสแตนซ์นั้นเมื่อการทดสอบสิ้นสุดลง นั่นหมายความว่าไม่มีการพึ่งพาแปลก ๆ ในการเรียกใช้การทดสอบและทุกอย่างสะอาด นอกจากนี้ยังหมายความว่าฉันสามารถทำการทดสอบการเริ่มต้น / ปิดเครื่องได้ มีคำแนะนำเกี่ยวกับวิธีการทำอย่างไร ฉันคิดเกี่ยวกับการเรียกใช้ข้อยกเว้นด้วยตนเองเพื่อนำมาลง แต่ดูเหมือนจะยุ่ง ฉันขุดผ่านเอกสาร Express และซอร์ส แต่ดูเหมือนจะไม่พบวิธีการใด ๆ ที่จะปิดเซิร์ฟเวอร์ อาจมีบางอย่างใน socket.io สำหรับสิ่งนี้ แต่เนื่องจากเซิร์ฟเวอร์ซ็อกเก็ตเชื่อมต่อกับเซิร์ฟเวอร์ Express ฉันคิดว่าสิ่งนี้จะต้องเกิดขึ้นที่เลเยอร์ด่วน

24
จะให้โปรแกรมเมอร์รุ่นเยาว์เขียนแบบทดสอบได้อย่างไร? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เรามีโปรแกรมเมอร์รุ่นน้องที่เขียนข้อสอบไม่เพียงพอ ฉันต้องจู้จี้เขาทุกสองชั่วโมง "คุณสอบข้อเขียนหรือเปล่า" เราได้ลองแล้ว: แสดงว่าการออกแบบกลายเป็นเรื่องง่ายขึ้น แสดงว่าป้องกันข้อบกพร่อง ทำให้มันเป็นเรื่องอัตตาที่บอกว่าโปรแกรมเมอร์ที่ไม่ดีเท่านั้น สุดสัปดาห์นี้สมาชิกในทีม 2 คนต้องมาทำงานเพราะรหัสของเขามีการอ้างอิง NULL และเขาไม่ได้ทดสอบ งานของฉันต้องการโค้ดที่มีเสถียรภาพคุณภาพสูงสุดและโดยปกติทุกคนจะ 'ได้รับ' และไม่จำเป็นต้องทำการทดสอบ เรารู้ว่าเราสามารถให้เขาเขียนข้อสอบได้ แต่เราทุกคนรู้ดีว่าข้อสอบที่มีประโยชน์คือข้อสอบที่เขียนขึ้นเมื่อคุณทำข้อสอบ คุณรู้ถึงแรงจูงใจเพิ่มเติมหรือไม่?

6
ทดสอบการกำหนดพารามิเตอร์ใน xUnit.net คล้ายกับ NUnit
มีวิธีการใดในกรอบงาน xUnit.net ที่คล้ายกับคุณสมบัติต่อไปนี้ของ NUnit หรือไม่? [Test, TestCaseSource("CurrencySamples")] public void Format_Currency(decimal value, string expected){} static object[][] CurrencySamples = new object[][] { new object[]{ 0m, "0,00"}, new object[]{ 0.0004m, "0,00"}, new object[]{ 5m, "5,00"}, new object[]{ 5.1m, "5,10"}, new object[]{ 5.12m, "5,12"}, new object[]{ 5.1234m, "5,12"}, new object[]{ 5.1250m, "5,13"}, // round …

7
การพัฒนา F # และการทดสอบหน่วย?
ฉันเพิ่งเริ่มใช้ F # ซึ่งเป็นภาษาแรกที่ใช้งานได้ ฉันทำงานกึ่งเดียวกับ C # และสนุกมากกับการที่ F # ทำให้ฉันคิดใหม่ว่าฉันเขียนโค้ดอย่างไร สิ่งหนึ่งที่ฉันพบว่ามีความสับสนเล็กน้อยคือการเปลี่ยนแปลงในกระบวนการเขียนโค้ด ตอนนี้ฉันใช้ TDD ใน C # มาหลายปีแล้วและรู้สึกขอบคุณมากที่มีการทดสอบหน่วยเพื่อให้ทราบว่าฉันอยู่ที่ไหน จนถึงตอนนี้กระบวนการของฉันกับ F # คือการเขียนฟังก์ชั่นบางอย่างเล่นกับคอนโซลแบบโต้ตอบจนกว่าฉันจะ "มีเหตุผล" แน่ใจว่ามันใช้งานได้และปรับแต่งและรวมเข้าด้วยกัน สิ่งนี้ใช้ได้ดีกับปัญหาเล็ก ๆ เช่นโครงการออยเลอร์ แต่ฉันนึกไม่ถึงว่าจะสร้างสิ่งที่ใหญ่ขนาดนั้นได้ ผู้คนเข้าถึงการทดสอบหน่วยและสร้างชุดทดสอบสำหรับโปรแกรม F # ได้อย่างไร มีเทียบเท่ากับ TDD หรือไม่? คำแนะนำหรือความคิดใด ๆ ที่ได้รับการชื่นชม


8
เรียกใช้ PostgreSQL ในหน่วยความจำเท่านั้น
ฉันต้องการเรียกใช้ฐานข้อมูล PostgreSQL ขนาดเล็กซึ่งทำงานในหน่วยความจำเท่านั้นสำหรับการทดสอบแต่ละหน่วยที่ฉันเขียน ตัวอย่างเช่น: @Before void setUp() { String port = runPostgresOnRandomPort(); connectTo("postgres://localhost:"+port+"/in_memory_db"); // ... } ตามหลักการแล้วฉันจะตรวจสอบไฟล์ปฏิบัติการ postgres เดียวในการควบคุมเวอร์ชันซึ่งการทดสอบหน่วยจะใช้ สิ่งที่เหมือนHSQLแต่สำหรับ postgres ฉันจะทำเช่นนั้นได้อย่างไร? ฉันจะได้รับ Postgres เวอร์ชันดังกล่าวหรือไม่ ฉันจะสั่งไม่ให้ใช้ดิสก์ได้อย่างไร

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