まとめ
brew instrall dotnet
dotnet --help
を見ながらプロジェクトとそのテストプロジェクトと、これらを含めるソリューションの作成を進めていく。dotnet test
1. .NET のインストール
brew install dotnet
実際
brew install dotnet
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Warning: Treating dotnet as a formula. For the cask, use homebrew/cask/dotnet or specify the `--cask` flag.
==> Downloading https://ghcr.io/v2/homebrew/core/dotnet/manifests/8.0.3
################################################################################################################################# 100.0%
==> Fetching dotnet
==> Downloading https://ghcr.io/v2/homebrew/core/dotnet/blobs/sha256:63c8e11132a0f13bbc45677dc3c46aed4781644c7132ed767a6a4b7994cfd58f
################################################################################################################################# 100.0%
==> Pouring dotnet--8.0.3.sonoma.bottle.tar.gz
==> Caveats
For other software to find dotnet you may need to set:
export DOTNET_ROOT="/usr/local/opt/dotnet/libexec"
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/dotnet/8.0.3: 4,080 files, 449.7MB
==> Running `brew cleanup dotnet`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
dotnet --list-sdks
8.0.103 [/usr/local/Cellar/dotnet/8.0.3/libexec/sdk]
2. C# プロジェクトとソリューション作り
mkdir -p ~/trial_csharp/HelloWorld
cd ~/trial_csharp/HelloWorld
# プロジェクト作成
dotnet new classlib -n MyLibrary
dotnet new xunit -n MyLibrary.Tests
# テストプロジェクトへのクラスライブラリの参照追加
dotnet add MyLibrary.Tests/MyLibrary.Tests.csproj reference MyLibrary/MyLibrary.csproj
# ソリューションファイルの作成 (オプションの位置付け)
dotnet new sln -n MySolution
dotnet sln MySolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MySolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj
# 確認
dotnet sln list
実践
# プロジェクト作成
dotnet new classlib -n MyLibrary
dotnet new xunit -n MyLibrary.Tests
テンプレート "クラス ライブラリ" が正常に作成されました。
作成後の操作を処理しています...
/Users/oki2a24/trial_csharp/HelloWorld/MyLibrary/MyLibrary.csproj を復元しています:
Determining projects to restore...
Restored /Users/oki2a24/trial_csharp/HelloWorld/MyLibrary/MyLibrary.csproj (in 474 ms).
正常に復元されました。
テンプレート "xUnit Test Project" が正常に作成されました。
作成後の操作を処理しています...
/Users/oki2a24/trial_csharp/HelloWorld/MyLibrary.Tests/MyLibrary.Tests.csproj を復元しています:
Determining projects to restore...
Restored /Users/oki2a24/trial_csharp/HelloWorld/MyLibrary.Tests/MyLibrary.Tests.csproj (in 9.31 sec).
正常に復元されました。
# テストプロジェクトへのクラスライブラリの参照追加
dotnet add MyLibrary.Tests/MyLibrary.Tests.csproj reference MyLibrary/MyLibrary.csproj
参照 `..\MyLibrary\MyLibrary.csproj` がプロジェクトに追加されました。
# ソリューションファイルの作成 (オプションの位置付け)
dotnet new sln -n MySolution
dotnet sln MySolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MySolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj
テンプレート "ソリューション ファイル" が正常に作成されました。
プロジェクト `MyLibrary/MyLibrary.csproj` をソリューションに追加しました。
プロジェクト `MyLibrary.Tests/MyLibrary.Tests.csproj` をソリューションに追加しました。
# 確認
dotnet sln list
プロジェクト
------
MyLibrary.Tests/MyLibrary.Tests.csproj
MyLibrary/MyLibrary.csproj
3. サンプルコードを追加してテストを実行する。
MyLibrary/Class1.cs
namespace MyLibrary;
public class Class1
{
public int Add(int a, int b)
{
return a + b;
}
}
MyLibrary.Tests/UnitTest1.cs
namespace MyLibrary.Tests;
public class UnitTest1
{
[Fact]
public void TestAdd()
{
// Arrange
var class1 = new Class1();
int a = 5;
int b = 3;
// Act
int result = class1.Add(a, b);
// Assert
Assert.Equal(8, result);
}
}
テストを実行する。
dotnet test
実践
dotnet test
Determining projects to restore...
Restored /Users/oki2a24/trial_csharp/HelloWorld/MyLibrary.Tests/MyLibrary.Tests.csproj (in 430 ms).
1 of 2 projects are up-to-date for restore.
MyLibrary -> /Users/oki2a24/trial_csharp/HelloWorld/MyLibrary/bin/Debug/net8.0/MyLibrary.dll
MyLibrary.Tests -> /Users/oki2a24/trial_csharp/HelloWorld/MyLibrary.Tests/bin/Debug/net8.0/MyLibrary.Tests.dll
/Users/oki2a24/trial_csharp/HelloWorld/MyLibrary.Tests/bin/Debug/net8.0/MyLibrary.Tests.dll (.NETCoreApp,Version=v8.0) のテスト実行
Microsoft (R) Test Execution Command Line Tool Version 17.8.0 (x64)
Copyright (c) Microsoft Corporation. All rights reserved.
テスト実行を開始しています。お待ちください...
合計 1 個のテスト ファイルが指定されたパターンと一致しました。
成功! -失敗: 0、合格: 1、スキップ: 0、合計: 1、期間: < 1 ms - MyLibrary.Tests.dll (net8.0)
おわりに
Visual Studio Code からビルドやテストやデバッグをできるようになりたい、と思いいろいろいじっていたのですが、なんだかうまくいきませんでした。。。
それで、 dotnet を最初 cli からインストールしたことを思い出し、 cli で全部できるんだろうなと思い、取り組んでみた次第です。
うまくいきました!
環境をこれで手に入れられたので、本手順のブラッシュアップや、 VS Code の環境構築の、足がかりにできるかなと思います♪
以上です。