.NET Core - ไลบรารีการทดสอบ

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

ให้เราเปิดไฟล์ global.json ไฟล์.

{ 
   "projects": [ "src", "test" ], 
   "sdk": { 
      "version": "1.0.0-preview2-003131" 
   } 
}

ที่ด้านบนของไฟล์นี้คุณจะเห็นการตั้งค่าโครงการและตั้งค่าโฟลเดอร์บางโฟลเดอร์เช่น src และ test โดยค่าเริ่มต้น.

ตามแบบแผนเราต้องมีโปรเจ็กต์ในโฟลเดอร์เหล่านี้นี่คืออนุสัญญาใหม่และจะใช้เป็นส่วนหนึ่งของ. NET Core

ในโซลูชัน Explorer คุณจะเห็นว่าทั้งโครงการคอนโซลและโครงการไลบรารีอยู่ในไฟล์ src โฟลเดอร์ในขณะที่โครงการทดสอบอยู่ภายใน test โฟลเดอร์

และโครงสร้างโปรเจ็กต์ใน Solution Explorer ไม่ได้แสดงถึงตำแหน่งที่โปรเจ็กต์มีอยู่จริงบนดิสก์ ตอนนี้ให้เราเปิดโฟลเดอร์โซลูชันและคุณจะเห็นว่าStringLibrary โครงการไม่ได้อยู่ใน src โฟลเดอร์

คุณจะเห็นว่าทั้งสองอย่าง src และ test โฟลเดอร์แม็พกับแบบแผนที่ระบุในไฟล์ global.jsonไฟล์. อย่างไรก็ตามเรามี StringLibrary โครงการหนึ่งซึ่งไม่อยู่ในรูปแบบ ให้เราเพิ่มไฟล์StringLibrary โครงการภายใน src โฟลเดอร์

ในโฟลเดอร์ src เรามีสองโปรเจ็กต์และเราต้องแก้ไขปัญหาเพื่อให้สามารถใช้โปรเจ็กต์ทั้งหมดได้อย่างถูกต้อง ให้เรากลับไปที่ Visual Studio แล้วคลิกขวาที่โครงการ StringLibrary แล้วเลือกตัวเลือกเอาออก มันจะไม่ลบออก แต่จะลบโปรเจ็กต์เท่านั้น

ตอนนี้คลิกขวาที่โฟลเดอร์ src แล้วเลือก Add → Existing Project…

เรียกดูโครงการ StringLibrary ซึ่งตอนนี้อยู่ในไฟล์ src เลือกโฟลเดอร์ StringLibrary.csproj ไฟล์แล้วคลิก Open.

ตอนนี้เราต้องลบการอ้างอิงของ StringLibrary จาก project.json ไฟล์ของแอปคอนโซล

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
      "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { }, 
         "imports": "dnxcore50" 
      } 
   } 
}

บันทึกการเปลี่ยนแปลงแล้วเพิ่มข้อมูลอ้างอิงของ StringLibrary อีกครั้งในโครงการคอนโซลของคุณ

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
   "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { 
            "StringLibrary": { 
               "target": "project" 
            } 
         }, 
         "imports": "dnxcore50" 
      } 
   } 
}

ตอนนี้ทุกอย่างควรจะกลับมาทำงานอีกครั้งและคุณสามารถสร้างได้ StringLibrary แล้ว FirstApp(โครงการคอนโซล) โดยไม่มีข้อผิดพลาดใด ๆ ตอนนี้ให้เราทดสอบการทำงานของ StringLibrary โดยใช้ xunit เราจำเป็นต้องเพิ่มการอ้างอิงของ StringLibrary ในโครงการทดสอบของเรา คลิกขวาที่โครงการ References of StringLibraryTests และเลือก Add Reference …

คลิก OK ซึ่งจะเพิ่มการอ้างอิงของ StringLibraryไปยังโครงการทดสอบของเรา ให้เราแทนที่รหัสต่อไปนี้ในไฟล์Tests.cs ไฟล์.

using System; 
using Xunit; 
using StringLibrary; 
  
namespace Tests { 
   public class Tests { 
      [Fact] 
      public void StartsWithUpperCaseTest() { 
         string input = "Mark"; 
         Assert.True(input.StartsWithUpper()); 
      } 
      [Fact] 
      public void StartsWithLowerCaseTest() { 
         string input = "mark"; 
         Assert.True(input.StartsWithLower()); 
      } 
      [Fact] 
      public void StartsWithNumberCaseTest() { 
         string input = "123"; 
         Assert.True(input.StartsWithNumber()); 
      } 
   } 
}

คุณจะเห็นว่าเรามีวิธีการทดสอบสามวิธีซึ่งจะทดสอบการทำงานของ StringLibrary ให้เราคลิกที่ไฟล์Run All และคุณจะเห็นผลลัพธ์ต่อไปนี้ใน Test Explorer

คุณยังสามารถเรียกใช้การทดสอบจากบรรทัดคำสั่ง ให้เราเปิดพรอมต์คำสั่งและเรียกใช้ไฟล์dotnet test คำสั่ง