.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 คำสั่ง