🤖
Cline+DeepSeekを利用して、C#のテストを行う
みなさんこんにちは
本日のお題
- 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