rksoftware

Visual Studio とか C# とかが好きです

C# コードが書けなくてもテストを追加する ~Pleasanter のテストを書く

今回の手順には、事前準備が必要です。
簡単に言うと、MSTest というテストを実行する環境が必要ということです。

■ Visual Studio Code

Visual Studio Code で環境を用意する手順です。
Visual Studio でもよいのですが、この環境構築の項目を読み飛ばしていない人は Visual Studio よりも Visual Studio Code が良いと思います。

Visual Studio Code をインストール

code.visualstudio.com

拡張機能のインストール

rksoftware.hatenablog.com

ソリューション(プログラム)の開き方

rksoftware.hatenablog.com

GitHub Copilot の準備

これはいいサイトが見つからなかったので頑張ってください。
我々のようなものは、すでに使い始めているので、Visual Studio Code などでサインインする手順ならわかっても、アカウント設定等はもうわからなくなってしまっています。自身が設定した時と変わっているはずですし。

頑張ってください。 docs.github.com

■ テストを書いてもらう

GitHub Copilot にテストを書いてもらいます。テスト対象のソースコードファイルを開いて、GitHub Copilot にこういうだけです。

/tests mstest

テストを書いてくれました。命名ルールだとかは気にしなくてよいでしょう。そんなものは後で変えればいい。
動けばいいのです。動けば。

■ テストプロジェクトにクラスを追加

GitHub Copilot が書いてくれたコードをコピー&ペーストで貼り付けるファイルを作ります。
ファイル名は、GitHub Copilot が書いてくれたクラス名に .cs という拡張子を追加したものです。

生まれたファイルに GitHub Copilot が書いてくれたコードを貼り付け。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Implem.Libraries.Utilities;
using System.Text.RegularExpressions;
using System.Linq;

namespace Implem.Libraries.Utilities.Tests
{
    [TestClass]
    public class RegexesTest
    {
        [TestMethod]
        public void TestRegexFirst_MatchFound()
        {
            string input = "Hello World";
            string pattern = "World";
            string result = input.RegexFirst(pattern);
            Assert.AreEqual("World", result);
        }

        [TestMethod]
        public void TestRegexFirst_NoMatch()
        {
            string input = "Hello World";
            string pattern = "Universe";
            string result = input.RegexFirst(pattern);
            Assert.AreEqual(string.Empty, result);
        }

        [TestMethod]
        public void TestRegexExists_MatchFound()
        {
            string input = "Hello World";
            string pattern = "World";
            bool result = input.RegexExists(pattern);
            Assert.IsTrue(result);
        }

        [TestMethod]
        public void TestRegexExists_NoMatch()
        {
            string input = "Hello World";
            string pattern = "Universe";
            bool result = input.RegexExists(pattern);
            Assert.IsFalse(result);
        }

        [TestMethod]
        public void TestRegexMatches_MatchFound()
        {
            string input = "Hello World";
            string pattern = "World";
            var matches = input.RegexMatches(pattern);
            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("World", matches[0].Value);
        }

        [TestMethod]
        public void TestRegexMatches_NoMatch()
        {
            string input = "Hello World";
            string pattern = "Universe";
            var matches = input.RegexMatches(pattern);
            Assert.AreEqual(0, matches.Count);
        }

        [TestMethod]
        public void TestRegexLike_MatchFound()
        {
            string input = "Hello World";
            string pattern = "world";
            var matches = input.RegexLike(pattern);
            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("World", matches[0].Value);
        }

        [TestMethod]
        public void TestRegexLike_NoMatch()
        {
            string input = "Hello World";
            string pattern = "universe";
            var matches = input.RegexLike(pattern);
            Assert.AreEqual(0, matches.Count);
        }

        [TestMethod]
        public void TestRegexValues_MatchFound()
        {
            string input = "Hello World";
            string pattern = "World";
            var values = input.RegexValues(pattern).ToList();
            Assert.AreEqual(1, values.Count);
            Assert.AreEqual("World", values[0]);
        }

        [TestMethod]
        public void TestRegexValues_NoMatch()
        {
            string input = "Hello World";
            string pattern = "Universe";
            var values = input.RegexValues(pattern).ToList();
            Assert.AreEqual(0, values.Count);
        }
    }
}

■ テスト実行

ビルドして

テスト実行

緑なのでテスト成功です。

■ あとは PR

テストが書けたら、後はプルリクエストをするだけです。

■ さあ

さあ君もテストを書いてプルリクエストをしてみよう!

今テストを書いているリポジトリはこちら

github.com