Zenn
🤖

Cline+DeepSeekを利用して、C#のテストを行う

2025/03/23に公開

みなさんこんにちは

本日のお題

  • C# で作成した、WebAPIに、テストプログラムを作成したい。
  • 人間で考えるのではなく、Cline+DeepSeekに頑張らせる。

テスト対象のプログラム

現状

  • keisan(ClineTestディレクトリ)ソリューションの下に、KeisanWebApiプロジェクトがある

プログラム

KeisanController.cs
using Microsoft.AspNetCore.Mvc;

namespace KeisanWebApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class KeisanController : ControllerBase
    {
        [HttpGet("add")]
        public IActionResult Add(double a, double b)
        {
            return Ok(a + b);
        }

        [HttpGet("subtract")]
        public IActionResult Subtract(double a, double b)
        {
            return Ok(a - b);
        }

        [HttpGet("multiply")]
        public IActionResult Multiply(double a, double b)
        {
            return Ok(a * b);
        }

        [HttpGet("divide")]
        public IActionResult Divide(double a, double b)
        {
            if (b == 0)
            {
                return BadRequest("Cannot divide by zero");
            }
            return Ok(a / b);
        }
    }
}

KeisanWebApi.Testsソリューションを作る

命令

  • C:\Git\ClineTestディレクトリの下に、KeisanWebApiソリューションがあります。C:\Git\ClineTestディレクトリの下に、KeisanWebApiソリューションのMStestを行う、KeisanWebApi.Testsプロジェクトを作ってください。

完成したプログラム

KeisanControllerTests.cs
using KeisanWebApi.Controllers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace KeisanWebApi.Tests;

[TestClass]
public class KeisanControllerTests
{
    [TestMethod]
    public void Add_ReturnsCorrectSum()
    {
        // Arrange
        var controller = new KeisanController();
        double a = 5.0;
        double b = 3.0;
        double expected = 8.0;

        // Act
        var result = controller.Add(a, b) as OkObjectResult;

        // Assert
        Assert.IsNotNull(result);
        Assert.AreEqual(expected, result.Value);
    }

    [TestMethod]
    public void Subtract_ReturnsCorrectDifference()
    {
        // Arrange
        var controller = new KeisanController();
        double a = 10.0;
        double b = 4.0;
        double expected = 6.0;

        // Act
        var result = controller.Subtract(a, b) as OkObjectResult;

        // Assert
        Assert.IsNotNull(result);
        Assert.AreEqual(expected, result.Value);
    }
}

テスト実行

  • 動いた!よかったよかった。

まとめ

  • テストプログラムも自動生成できそう。(確認は必要)
  • テストを作るのが一番面倒なので、かなりいいのではないか。
  • とはいえ、テストは網羅性ではないですからね。
  • イメージとしてはすごくよくできる新人が来たイメージ。

Discussion

ログインするとコメントできます