Language
Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ããã¹ã ãããžã§ã¯ãããœãªã¥ãŒã·ã§ã³ã«è¿œå ããŠãåäœãã¹ããèªååããæ¹æ³ã«ã€ããŠèª¬æããŸãã
[åææ¡ä»¶]
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ã .NET ã¯ã©ã¹ ã©ã€ãã©ãªãäœæã§äœæãããœãªã¥ãŒã·ã§ã³ã䜿çšããŸãã
åäœãã¹ã ãããžã§ã¯ããäœæãã
åäœãã¹ãã§ã¯ãéçºããã³å ¬éæã«èªååããããœãããŠã§ã¢ ãã¹ããæäŸãããŸãã MSTest ã¯ãéžæã§ãã 3 ã€ã®ãã¹ã ãã¬ãŒã ã¯ãŒã¯ã®ãã¡ã® 1 ã€ã§ãã ãã®ä»ã¯ xUnit ãš nUnitã§ãã
Visual Studioãéå§ããŸãã
ClassLibraryProjectsãœãªã¥ãŒã·ã§ã³ãéããŠãäœæãã .NET ã¯ã©ã¹ ã©ã€ãã©ãªãéããŸãããStringLibraryTestã ãšããååã®æ°ããåäœãã¹ã ãããžã§ã¯ãããœãªã¥ãŒã·ã§ã³ã«è¿œå ããŸãã
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ ã§ãœãªã¥ãŒã·ã§ã³ãå³ã¯ãªãã¯ããAdd>New ãããžã§ã¯ã ãéžæããŸãã
[æ°ãããããžã§ã¯ãã®è¿œå ] ããŒãžã§ãæ€çŽ¢ããã¯ã¹ã«ãmstestããšå ¥åããŸãã èšèªã®äžèЧãã C# ãŸã㯠Visual Basic ãéžæãããã©ãããã©ãŒã ã®äžèЧãã All platforms ãéžæããŸãã
MSTest ãã¹ã ãããžã§ã¯ã ãã³ãã¬ãŒããéžæãã[次ãž] ãéžæããŸãã
[æ°ãããããžã§ã¯ãã®æ§æ] ããŒãžã§ã[ãããžã§ã¯ãå] ããã¯ã¹ã«ãStringLibraryTestããšå ¥åããŸãã [次ãž] ãéžã³ãŸãã
[è¿œå æ å ±] ããŒãžã§ãFramework ããã¯ã¹ã§ .NET 10 ãéžæããTest runner ã§ã¯ Microsoft.Testing.Platform (MTP) ãéžæããäœæ ãéžæããŸãã
Visual Studioãããžã§ã¯ããäœæããæ¬¡ã®ã³ãŒãã䜿çšããŠã³ãŒã ãŠã£ã³ããŠã§ã¯ã©ã¹ ãã¡ã€ã«ãéããŸãã 䜿çšããèšèªã衚瀺ãããªãå Žåã¯ãããŒãžã®äžéšã«ããèšèªã»ã¬ã¯ã¿ãŒã倿ŽããŸãã
namespace StringLibraryTest { [TestClass] public sealed class Test1 { [TestMethod] public void TestMethod1() { } } }Imports Microsoft.VisualStudio.TestTools.UnitTesting Namespace StringLibraryTest <TestClass> Public Class Test1 <TestMethod> Sub TestSub() End Sub End Class End Namespaceåäœãã¹ãã®ãã³ãã¬ãŒãã§äœæããããœãŒã¹ ã³ãŒãã«ãããæ¬¡ã®åŠçãè¡ãããŸãã
- C# ã® StringLibraryTest ãããžã§ã¯ã ãã¡ã€ã«ã« Microsoft.VisualStudio.TestTools.UnitTesting ãå«ããVisual Basic ã« Microsoft.VisualStudio.TestTools.UnitTestingãã€ã³ããŒãããŸãã
-
TestClassAttribute ã¯ã©ã¹ã«
Test1屿§ãé©çšããŸãã -
TestMethodAttribute 屿§ãé©çšããŠãC# ãŸã㯠Visual Basic
TestMethod1ã§TestSubãå®çŸ©ããŸãã
[TestClass] ã§ã¿ã°ä»ãããããã¹ã ã¯ã©ã¹ã® [TestMethod] ã§ã¿ã°ä»ããããåã¡ãœããã¯ãåäœãã¹ãã®å®è¡æã«èªåçã«å®è¡ãããŸãã
Visual Studio Codeãéå§ããŸãã
ClassLibraryProjectsãœãªã¥ãŒã·ã§ã³ãéããŠãäœæãã .NET ã¯ã©ã¹ ã©ã€ãã©ãªãéããŸãããœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ ãã New Project ãéžæããããã³ãã³ã ãã¬ãããã .NET: New Project ãéžæããŸãã
MSTest ãã¹ã ãããžã§ã¯ããéžæãã"StringLibraryTest" ãšããååãä»ããæ¢å®ã®ãã£ã¬ã¯ããªãéžæããŠã[ãããžã§ã¯ãã®äœæ] ãéžæããŸãã
ãããžã§ã¯ã ãã³ãã¬ãŒãã¯ã次ã®ã³ãŒãã 䜿çšã㊠StringLibraryTest/Test1.cs ãäœæããŸãã
namespace StringLibraryTest; [TestClass] public class Test1 { [TestMethod] public void TestMethod1() { } }åäœãã¹ãã®ãã³ãã¬ãŒãã§äœæããããœãŒã¹ ã³ãŒãã«ãããæ¬¡ã®åŠçãè¡ãããŸãã
-
TestClassAttribute屿§ã
Test1ã¯ã©ã¹ã«é©çšããŸãã -
TestMethodAttribute屿§ãé©çšããŠã
TestMethod1ãå®çŸ©ããŸãã -
Microsoft.VisualStudio.TestTools.UnitTestingåå空éãã€ã³ããŒããããŸãããã®åå空éã«ã¯ãåäœãã¹ãã«äœ¿çšãããåãå«ãŸããŠããŸãã åå空éã¯ãGlobalUsings.csã®
global usingãã£ã¬ã¯ãã£ãã䜿çšããŠã€ã³ããŒããããŸãã
[TestClass] ã§ã¿ã°ä»ãããããã¹ã ã¯ã©ã¹ã® [TestMethod] ã§ã¿ã°ä»ããããåã¡ãœããã¯ãåäœãã¹ããåŒã³åºããããšèªåçã«å®è¡ãããŸãã
-
TestClassAttribute屿§ã
ã¿ãŒããã«ãéããStringLibrary ãããžã§ã¯ããš ShowCase ãããžã§ã¯ããå«ã tutorials ãã©ã«ããŒã«ç§»åããŸãã
æ°ãã MSTest ãã¹ã ãããžã§ã¯ããäœæããŸãã
dotnet new mstest -n StringLibraryTestãããžã§ã¯ã ãã³ãã¬ãŒãã¯ã次ã®ã³ãŒãã 䜿çšã㊠StringLibraryTest/Test1.cs ãäœæããŸãã
namespace StringLibraryTest; [TestClass] public class Test1 { [TestMethod] public void TestMethod1() { } }åäœãã¹ãã®ãã³ãã¬ãŒãã§äœæããããœãŒã¹ ã³ãŒãã«ãããæ¬¡ã®åŠçãè¡ãããŸãã
-
TestClassAttribute屿§ã
Test1ã¯ã©ã¹ã«é©çšããŸãã -
TestMethodAttribute屿§ãé©çšããŠã
TestMethod1ãå®çŸ©ããŸãã - Microsoft.VisualStudio.TestTools.UnitTestingåå空éãã€ã³ããŒããããŸãããã®åå空éã«ã¯ãåäœãã¹ãã«äœ¿çšãããåãå«ãŸããŠããŸãã
[TestClass] ã§ã¿ã°ä»ãããããã¹ã ã¯ã©ã¹ã® [TestMethod] ã§ã¿ã°ä»ããããåã¡ãœããã¯ãåäœãã¹ããåŒã³åºããããšèªåçã«å®è¡ãããŸãã
-
TestClassAttribute屿§ã
ãããžã§ã¯ãåç §ã远å ãã
ãã¹ã ãããžã§ã¯ãã§ StringLibrary ã¯ã©ã¹ãæäœããã«ã¯ã StringLibraryTest ãããžã§ã¯ãå
ã®åç
§ã StringLibrary ãããžã§ã¯ãã«è¿œå ããŸãã
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ ã§ãStringLibraryTest ãããžã§ã¯ãã® Dependencies ããŒããå³ã¯ãªãã¯ããã³ã³ããã¹ã ã¡ãã¥ãŒãã[ãããžã§ã¯ãåç §ã®è¿œå ãéžæããŸãã[ åç §ãããŒãžã£ãŒ ] ãã€ã¢ãã°ã§ã[ StringLibrary] ã®æšªã«ããããã¯ã¹ãéžæããŸãã
[OK] ãéžæ.
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ 'StringLibraryTest' ãããžã§ã¯ããå³ã¯ãªãã¯ãããããžã§ã¯ãåç §ã®è¿œå ãéžæããŸãã[StringLibrary] ãéžæããŸãã
StringLibraryTest ãã©ã«ããŒã«ç§»åãããããžã§ã¯ãåç §ã远å ããŸãã
cd StringLibraryTest dotnet add reference ../StringLibrary/StringLibrary.csproj
åäœãã¹ã ã¡ãœããã®è¿œå ãšå®è¡
åäœãã¹ããå®è¡ãããšãTestMethodAttribute屿§ã§ããŒã¯ãããã¯ã©ã¹ã®TestClassAttribute屿§ã§ããŒã¯ãããåã¡ãœãããèªåçã«å®è¡ãããŸãã ãã¹ã ã¡ãœããã¯ãæåã®ãšã©ãŒãèŠã€ãã£ãããã¡ãœããã«å«ãŸãããã¹ãŠã®ãã¹ããæåãããšãã«çµäºããŸãã
äžè¬çãªãã¹ãã§ã¯ãAssert ã¯ã©ã¹ã®ã¡ã³ããŒãåŒã³åºãããŸãã å€ãã®ã¢ãµãŒã ã¡ãœããã¯æäœ 2 ã€ã®ãã©ã¡ãŒã¿ãŒãå«ãã§ããŸãã1 ã€ã¯äºæããããã¹ãçµæããã 1 ã€ã¯å®éã®ãã¹ãçµæã§ãã æ¬¡ã®è¡šã«ãAssert ã¯ã©ã¹ã®é »ç¹ã«åŒã³åºãããã¡ãœãããããã€ã瀺ããŸãã
| Assert ã¡ãœãã | Function |
|---|---|
Assert.AreEqual |
2 ã€ã®å€ãŸã㯠2 ã€ã®ãªããžã§ã¯ããçããããšã確èªããŸãã å€ãŸãã¯ãªããžã§ã¯ããçãããªãå Žåãã¢ãµãŒãã¯å€±æããŸãã |
Assert.AreSame |
2 ã€ã®ãªããžã§ã¯ã倿°ãåããªããžã§ã¯ããåç §ããŠããããšã確èªããŸãã 倿°ãå¥ã ã®ãªããžã§ã¯ããåç §ããŠããå Žåãã¢ãµãŒãã¯å€±æããŸãã |
Assert.IsFalse |
æ¡ä»¶ãfalseã§ããããšãæ€èšŒããŸãã æ¡ä»¶ã true ã®å Žåãã¢ãµãŒãã¯å€±æããŸãã |
Assert.IsNotNull |
ãªããžã§ã¯ãã null ã§ãªãããšã確èªããŸãã ãªããžã§ã¯ãã null ã§ããå Žåãã¢ãµãŒãã¯å€±æããŸãã |
ãã¹ã ã¡ãœããã§ã¯ãAssert.Throws ã¡ãœããã䜿ã£ãŠãäºæããäŸå€ã®çš®é¡ã瀺ãããšãã§ããŸãã æå®ããäŸå€ãã¹ããŒãããªãå Žåããã¹ãã¯å€±æããŸãã
StringLibrary.StartsWithUpper ã¡ãœããã®ãã¹ãã§ã¯ã倧æåã§å§ãŸãæååã倿°æå®ããå¿
èŠããããŸãã ãããã®å Žåã§ã¯ã¡ãœããã true ãè¿ããšäºæž¬ãããã®ã§ãAssert.IsTrue ã¡ãœãããåŒã³åºãããšãã§ããŸãã åæ§ã«ã倧æå以å€ã®æååã§å§ãŸãæååã倿°æå®ããå¿
èŠããããŸãã ãããã®å Žåã§ã¯ã¡ãœããã false ãè¿ããšäºæž¬ãããã®ã§ãAssert.IsFalse ã¡ãœãããåŒã³åºãããšãã§ããŸãã
ã©ã€ãã©ãª ã¡ãœããã¯æååãåŠçãããããString.Emptyæååãæ£åžžã«åŠçãããããã«ããå¿
èŠããããŸãã ç©ºã®æååã¯ãæåããªãã Length ã 0 ã§ããæååã§ãã
nullæååã¯åæåãããŠããªãæååã§ãã
StartsWithUpperãéçã¡ãœãããšããŠçŽæ¥åŒã³åºãã1 ã€ã®StringåŒæ°ãæž¡ãããšãã§ããŸãã ãŸãã¯ãStartsWithUpperã«å²ãåœãŠãããstring倿°ã®æ¡åŒµã¡ãœãããšããŠnullãåŒã³åºãããšãã§ããŸãã
3 ã€ã®ã¡ãœãããå®çŸ©ããŸããåã¡ãœããã¯ãæååé åå ã®åèŠçŽ ã«å¯Ÿã㊠Assert ã¡ãœãããåŒã³åºããŸãã ãã¹ãã«å€±æããå Žåã«è¡šç€ºãããšã©ãŒ ã¡ãã»ãŒãžãæå®ã§ããã¡ãœãã ãªãŒããŒããŒããåŒã³åºããŸãã ãã®ã¡ãã»ãŒãžã«ãã£ãŠããšã©ãŒã®åå ãšãªã£ãæååãèå¥ãããŸãã
ãã¹ã ã¡ãœãããäœæããã«ã¯
Test1.csãŸãã¯Test1.vbã³ãŒã ãŠã£ã³ããŠã§ãã³ãŒããæ¬¡ã®ã³ãŒãã«çœ®ãæããŸãã
using UtilityLibraries; namespace StringLibraryTest { [TestClass] public sealed class Test1 { [TestMethod] public void TestStartsWithUpper() { // Tests that we expect to return true. string[] words = ["Alphabet", "Zebra", "ABC", "ÎΞήΜα", "ÐПÑква"]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsTrue(result, $"Expected for '{word}': true; Actual: {result}"); } } [TestMethod] public void TestDoesNotStartWithUpper() { // Tests that we expect to return false. string[] words = ["alphabet", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " "]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsFalse(result, $"Expected for '{word}': false; Actual: {result}"); } } [TestMethod] public void DirectCallWithNullOrEmpty() { // Tests that we expect to return false. string?[] words = [string.Empty, null]; foreach (var word in words) { bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, $"Expected for '{word ?? "<null>"}': false; Actual: {result}"); } } } }Imports Microsoft.VisualStudio.TestTools.UnitTesting Imports UtilityLibraries Namespace StringLibraryTest <TestClass> Public Class UnitTest1 <TestMethod> Public Sub TestStartsWithUpper() ' Tests that we expect to return true. Dim words() As String = {"Alphabet", "Zebra", "ABC", "ÎΞήΜα", "ÐПÑква"} For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsTrue(result, $"Expected for '{word}': true; Actual: {result}") Next End Sub <TestMethod> Public Sub TestDoesNotStartWithUpper() ' Tests that we expect to return false. Dim words() As String = {"alphabet", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " "} For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsFalse(result, $"Expected for '{word}': false; Actual: {result}") Next End Sub <TestMethod> Public Sub DirectCallWithNullOrEmpty() ' Tests that we expect to return false. Dim words() As String = {String.Empty, Nothing} For Each word In words Dim result As Boolean = StringLibrary.StartsWithUpper(word) Assert.IsFalse(result, $"Expected for '{If(word Is Nothing, "<null>", word)}': false; Actual: {result}") Next End Sub End Class End NamespaceTestStartsWithUpperã¡ãœããã®å€§æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å€§æåã®ã¢ã«ãã¡ (U+0391) ãšããªã«æåã®å€§æå EM (U+041C) ãå«ãŸããŠããŸããTestDoesNotStartWithUpperã¡ãœããã®å°æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å°æåã®ã¢ã«ãã¡ (U+03B1) ãšããªã«æåã®å°æå Ghe (U+0433) ãå«ãŸããŠããŸããã¡ãã¥ãŒ ããŒã® [ãã¡ã€ã«] > [Test1.csãã¡ã€ã«ã®ä¿å] ãŸã㯠[ãã¡ã€ã«] > [Test1.vbã«ä¿å] ãéžæããŸãã [ååãä»ããŠãã¡ã€ã«ãä¿å] ãã€ã¢ãã°ã§ã[ä¿å] ãã¿ã³ã®æšªã«ããç¢å°ãéžæããŠã[ãšã³ã³ãŒãä»ãã§ä¿å] ãéžæããŸãã
[ååãä»ããŠä¿åã®ç¢ºèª] ãã€ã¢ãã° ããã¯ã¹ã§ã[ã¯ã] ãã¿ã³ãéžæããŠãã¡ã€ã«ãä¿åããŸãã
[ä¿åãªãã·ã§ã³ã®è©³çްèšå®] ãã€ã¢ãã°ã® [ãšã³ã³ãŒã] ããããããŠã³ ãªã¹ããã [Unicode (UTF-8 ã·ã°ããã£ä»ã) - ã³ãŒãããŒãž 65001] ãéžæãã[OK] ã®é ã«éžæããŸãã
ãœãŒã¹ ã³ãŒãã UTF8 ã§ãšã³ã³ãŒãããããã¡ã€ã«ãšããŠä¿åã§ããªãå Žåã¯ãVisual Studio ASCII ãã¡ã€ã«ãšããŠä¿åãããå¯èœæ§ããããŸãã ãã®å Žåãã©ã³ã¿ã€ã 㯠ASCII ç¯å²å€ã® UTF8 æåãæ£ç¢ºã«ãã³ãŒãããããã¹ãçµæãæ£ãããããŸããã
ã¡ãã¥ãŒ ããŒã§ [ãã¹ã]>[ãã¹ãŠã®ãã¹ããå®è¡ãã] ãéžæããŸãã ãã¹ã ãšã¯ã¹ãããŒã©ãŒã® ãŠã£ã³ããŠãéããªãå Žåã¯ã[ãã¹ã>ãã¹ã ãšã¯ã¹ãããŒã©ãŒ]ãéžãã§éããŠãã ããã 3 ã€ã®ãã¹ãã [æåãããã¹ã] ã»ã¯ã·ã§ã³ã«è¡šç€ºããã[æŠèŠ] ã»ã¯ã·ã§ã³ã«ã¯ãã¹ãã®å®è¡çµæã衚瀺ãããŠããŸãã
ãã¹ããåæ Œãããã¹ã ãšã¯ã¹ãããŒã©ãŒ ãŠã£ã³ããŠã§
StringLibraryTest/Test1.cs ãéãããã¹ãŠã®ã³ãŒããæ¬¡ã®ã³ãŒãã«çœ®ãæããŸãã
using UtilityLibraries; namespace StringLibraryTest { [TestClass] public sealed class Test1 { [TestMethod] public void TestStartsWithUpper() { // Tests that we expect to return true. string[] words = ["Alphabet", "Zebra", "ABC", "ÎΞήΜα", "ÐПÑква"]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsTrue(result, $"Expected for '{word}': true; Actual: {result}"); } } [TestMethod] public void TestDoesNotStartWithUpper() { // Tests that we expect to return false. string[] words = ["alphabet", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " "]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsFalse(result, $"Expected for '{word}': false; Actual: {result}"); } } [TestMethod] public void DirectCallWithNullOrEmpty() { // Tests that we expect to return false. string?[] words = [string.Empty, null]; foreach (var word in words) { bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, $"Expected for '{word ?? "<null>"}': false; Actual: {result}"); } } } }TestStartsWithUpperã¡ãœããã®å€§æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å€§æåã®ã¢ã«ãã¡ (U+0391) ãšããªã«æåã®å€§æå EM (U+041C) ãå«ãŸããŠããŸããTestDoesNotStartWithUpperã¡ãœããã®å°æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å°æåã®ã¢ã«ãã¡ (U+03B1) ãšããªã«æåã®å°æå Ghe (U+0433) ãå«ãŸããŠããŸãã倿Žãä¿åã
ãã¹ãããã«ãããŠå®è¡ãã
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ ã§ããœãªã¥ãŒã·ã§ã³ãå³ã¯ãªãã¯ããBuild ãéžæããããã³ãã³ã ãã¬ãããã .NET: Build ãéžæããŸãã
[ ãã¹ã ] ãŠã£ã³ããŠãéžæãã[ ãã¹ãã®å®è¡ ] ãéžæããããã³ãã³ã ãã¬ããã§ [ ãã¹ã: ãã¹ãŠã®ãã¹ããå®è¡] ãéžæããŸãã
StringLibraryTest/Test1.cs ãéãããã¹ãŠã®ã³ãŒããæ¬¡ã®ã³ãŒãã«çœ®ãæããŸãã
using UtilityLibraries; namespace StringLibraryTest { [TestClass] public sealed class Test1 { [TestMethod] public void TestStartsWithUpper() { // Tests that we expect to return true. string[] words = ["Alphabet", "Zebra", "ABC", "ÎΞήΜα", "ÐПÑква"]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsTrue(result, $"Expected for '{word}': true; Actual: {result}"); } } [TestMethod] public void TestDoesNotStartWithUpper() { // Tests that we expect to return false. string[] words = ["alphabet", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " "]; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsFalse(result, $"Expected for '{word}': false; Actual: {result}"); } } [TestMethod] public void DirectCallWithNullOrEmpty() { // Tests that we expect to return false. string?[] words = [string.Empty, null]; foreach (var word in words) { bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, $"Expected for '{word ?? "<null>"}': false; Actual: {result}"); } } } }TestStartsWithUpperã¡ãœããã®å€§æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å€§æåã®ã¢ã«ãã¡ (U+0391) ãšããªã«æåã®å€§æå EM (U+041C) ãå«ãŸããŠããŸããTestDoesNotStartWithUpperã¡ãœããã®å°æåã®ãã¹ãã«ã¯ãã®ãªã·ã£èªã®å°æåã®ã¢ã«ãã¡ (U+03B1) ãšããªã«æåã®å°æå Ghe (U+0433) ãå«ãŸããŠããŸãã倿Žãä¿åããŠãã¹ããå®è¡ããŸãã
dotnet testãã¹ãã«åæ Œããå¿ èŠããããŸãã
ãã¹ãã®å€±æã®åŠç
ãã¹ãé§åéçº (TDD) ãè¡ã£ãŠããå Žåãæåã«ãã¹ããäœæãããšã1 åç®ã®ãã¹ãå®è¡ã¯å€±æããŸãã ãã®åŸããã¹ããæåãããã³ãŒããã¢ããªã«è¿œå ããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãæ€èšŒããã¢ã㪠ã³ãŒããèšè¿°ããåŸã«ãã¹ããäœæããããããã¹ãã倱æããããšã¯ãããŸããã§ããã ãã¹ãã®å€±æãäºæ³ããããšãã«ãã¹ãã倱æããããšãæ€èšŒããã«ã¯ããã¹ãå ¥åã«ç¡å¹ãªå€ã远å ããŸãã
wordsã¡ãœããã®TestDoesNotStartWithUpperé åã倿Žããæåå "Error" ãå«ããŸããstring[] words = { "alphabet", "Error", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " " };Dim words() As String = { "alphabet", "Error", "zebra", "abc", "Î±Ï ÏοκιΜηÏοβιοΌηÏαΜία", "гПÑÑЎаÑÑÑвП", "1234", ".", ";", " " }
ã¡ãã¥ãŒããŒãã ãã¹ã>ãã¹ãŠã®ãã¹ã ãéžæããŠããã¹ããå®è¡ããŸãã [ãã¹ã ãšã¯ã¹ãããŒã©ãŒ] ãŠã£ã³ããŠã«ããã¹ãã 2 ã€æåãã1 ã€å€±æããããšã瀺ãããŸãã
倱æãããã¹ããéžæãã
TestDoesNotStartWithãå®è¡ããŸãããã¹ã ãšã¯ã¹ãããŒã©ãŒã® ãŠã£ã³ããŠã«ã¯ãassert ã«ãã£ãŠçæãããã¡ãã»ãŒãžãAssert.IsFalse ã«å€±æããŸãããã衚瀺ãããŸãã 'Error' ã«æåŸ ãããçµæ: false; å®éã®çµæ: Trueã倱æã«ããã"Error" ã®åŸã®é åå ã®æååã¯ãã¹ããããŸããã§ããã
ãšãã£ã¿ãŒã§ãã¹ãã®æšªã«ããç·è²ã®ãšã©ãŒãã¯ãªãã¯ããŠããã¹ããå®è¡ããŸãã
åºåã«ããã¹ãã倱æããããšã瀺ãã¡ãã»ãŒãžãšå€±æãããã¹ãã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸã: "Assert.IsFalse failed." 'Error': false ã§ããããšãæåŸ ãããŸãããå®é㯠True ã§ãã ãšã©ãŒã®ããã"Error" ã®åŸã«é åå ã®æååããã¹ããããŸããã§ããã
ãã¹ããå®è¡ããŸãã
dotnet teståºåã«ããã¹ãã倱æããããšã瀺ãã¡ãã»ãŒãžãšå€±æãããã¹ãã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸã: "Assert.IsFalse failed." 'Error': false ã§ããããšãæåŸ ãããŸãããå®é㯠True ã§ãã ãšã©ãŒã®ããã"Error" ã®åŸã«é åå ã®æååããã¹ããããŸããã§ããã
远å ããæåå "Error" ãåé€ããŸãã
ãã¹ããåå®è¡ãããšããã¹ãã¯æåããŸãã
ã©ã€ãã©ãªã®ãªãªãŒã¹ ããŒãžã§ã³ã®ãã¹ã
ã©ã€ãã©ãªã®ãããã° ãã«ããå®è¡ãããšãã«ãã¹ãããã¹ãŠæåããããã©ã€ãã©ãªã®ãªãªãŒã¹ ãã«ãã«å¯ŸããŠè¿œå ã®æéãã¹ããå®è¡ããŸãã ã³ã³ãã€ã©ã®æé©åãªã©ãããŸããŸãªèŠå ã«ãã£ãŠããããã° ãã«ããšãªãªãŒã¹ ãã«ãéã§åäœãç°ãªãå ŽåããããŸãã
ãªãªãŒã¹ ãã«ãããã¹ãããã«ã¯ãæ¬¡ã®æäœãè¡ããŸãã
Visual Studio ããŒã« ããŒã§ããã«ãæ§æã Debug ãã Release ã«å€æŽããŸãã
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒ ã§ãStringLibrary ãããžã§ã¯ããå³ã¯ãªãã¯ããã³ã³ããã¹ã ã¡ãã¥ãŒãã Build ãéžæããŠã©ã€ãã©ãªãåã³ã³ãã€ã«ããŸãã
ã¡ãã¥ãŒããŒãã [ãã¹ã] ãéžã³ã[ãã¹ãŠã®ãã¹ãã®å®è¡]> ãå®è¡ããŠãåäœãã¹ããè¡ããŸãã ãã¹ããæåããŸãã
ãªãªãŒã¹ ãã«ãæ§æã§ãã¹ããå®è¡ããŸãã
dotnet test StringLibraryTest/StringLibraryTest.csproj --configuration Release
ãã¹ããæåããŸãã
ãªãªãŒã¹ ãã«ãæ§æã§ãã¹ããå®è¡ããŸãã
dotnet test --configuration Release
ãã¹ããæåããŸãã
ãããã°ãã¹ã
IDE ãšããŠVisual Studioã䜿çšããŠããå Žåã¯ããTutorial: .NET ã³ã³ãœãŒã« ã¢ããªã±ãŒã·ã§ã³ããããã°ããã«ç€ºãããŠããã®ãšåãããã»ã¹ã䜿çšããŠãåäœãã¹ã ãããžã§ã¯ãã䜿çšããŠã³ãŒãããããã°ã§ããŸãã ShowCase ã¢ã㪠ãããžã§ã¯ããéå§ãã代ããã«ãStringLibraryTests ãããžã§ã¯ããå³ã¯ãªãã¯ããã³ã³ããã¹ã ã¡ãã¥ãŒãã [ãã¹ãã®ãããã°] ãéžæããŸãã
Visual Studioãããã¬ãŒãã¢ã¿ãããããç¶æ ã§ãã¹ã ãããžã§ã¯ããéå§ããŸãã ãã¹ã ãããžã§ã¯ããŸãã¯åºã«ãªãã©ã€ãã©ãª ã³ãŒãã«è¿œå ãããã¬ãŒã¯ãã€ã³ãã§å®è¡ã忢ããŸãã
Visual Studio Codeã IDE ãšããŠäœ¿çšããŠããå Žåã¯ãdebug a .NET ã³ã³ãœãŒã« ã¢ããªã±ãŒã·ã§ã³ã«ç€ºãããŠããã®ãšåãããã»ã¹ã䜿çšããŠãåäœãã¹ã ãããžã§ã¯ãã䜿çšããŠã³ãŒãããããã°ã§ããŸãã ShowCase ã¢ã㪠ãããžã§ã¯ããéå§ãã代ããã«ãStringLibraryTest/Test1.cs ãéãã7 è¡ç®ãã 8 è¡ç®ãŸã§ã®çŸåšã®ãã¡ã€ã«ã§ [ãã¹ãã®ãããã°] ãéžæããŸãã èŠã€ãããªãå Žåã¯ãCtrl++ããŒãæŒããŠã³ãã³ã ãã¬ãããéããããŠã£ã³ããŠã®åèªã¿èŸŒã¿ããšå ¥åããŸãã
Visual Studio Codeãããã¬ãŒãã¢ã¿ãããããç¶æ ã§ãã¹ã ãããžã§ã¯ããéå§ããŸãã ãã¹ã ãããžã§ã¯ããŸãã¯åºã«ãªãã©ã€ãã©ãª ã³ãŒãã«è¿œå ãããã¬ãŒã¯ãã€ã³ãã§å®è¡ã忢ããŸãã
ãã®ä»ã®ãªãœãŒã¹
ãªãœãŒã¹ãã¯ãªãŒã³ã¢ãããã
GitHubãéã¢ã¯ãã£ãç¶æ
ã 30 æ¥åŸã« Codespace ãèªåçã«åé€ããŸãã ãã®ã·ãªãŒãºã®ãã®ä»ã®ãã¥ãŒããªã¢ã«ã調ã¹ãäºå®ãããå Žåã¯ãCodespace ãããããžã§ãã³ã°ãããŸãŸã«ããŠããããšãã§ããŸãã
.NET ãµã€ãã«ã¢ã¯ã»ã¹ããŠ.NET SDK ãããŠã³ããŒãããæºåãã§ããããCodespace ãåé€ã§ããŸãã Codespace ãåé€ããã«ã¯ããã©ãŠã¶ãŒ ãŠã£ã³ããŠãéãã Codespaces ã«ç§»åããŸãã ãŠã£ã³ããŠã«ã³ãŒãã¹ããŒã¹ã®äžèЧã衚瀺ãããŸãã learn ãã¥ãŒããªã¢ã«ã®ã³ãŒãã¹ããŒã¹ã®ãšã³ããªã§ã3 ã€ã®ããã (...) ãéžæããŸãã æ¬¡ã«ã[åé€] ãéžæããŸãã
次ã®ã¹ããã
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãã¯ã©ã¹ ã©ã€ãã©ãªã®åäœãã¹ããè¡ããŸããã ã©ã€ãã©ãªãä»ã®ãŠãŒã¶ãŒã䜿çšã§ããããã«ããã«ã¯ãã©ã€ãã©ãªãããã±ãŒãžãšã㊠NuGet ã«çºè¡ããŸãã æ¹æ³ã«ã€ããŠã¯ã次㮠NuGet ã®ãã¥ãŒããªã¢ã«ã«åŸã£ãŠãã ããã
ã©ã€ãã©ãªã NuGet ããã±ãŒãžãšããŠçºè¡ããå Žåãä»ã®ãŠãŒã¶ãŒããããã€ã³ã¹ããŒã«ããŠäœ¿çšã§ããŸãã æ¹æ³ã«ã€ããŠã¯ã次㮠NuGet ã®ãã¥ãŒããªã¢ã«ã«åŸã£ãŠãã ããã
ã©ã€ãã©ãªã¯ããã±ãŒãžãšããŠé åžããå¿ èŠã¯ãããŸããã ããã䜿çšãããã³ã³ãœãŒã« ã¢ããªã«ãã³ãã«ããããšãã§ããŸãã ã³ã³ãœãŒã« ã¢ããªãçºè¡ããæ¹æ³ã«ã€ããŠã¯ããã®ã·ãªãŒãºã®åã®ãã¥ãŒããªã¢ã«ãåç §ããŠãã ããã