์ฝ์ ์ฑ์ ์ฌ์ฉํ์ฌ nunitlite ๋ก dotnet run
(์: ์ด chessie ์ปค๋ฐ )๋ก nunit ํ
์คํธ๋ฅผ ์ด๋ฏธ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํ (์์ง dnxcore50
๊ธฐ์์ด ์์ด์ผํ๋ค netstandard
)
๊ทธ๋ฌ๋ .NET CLI( https://github.com/dotnet/cli )์์ ํ
์คํธ ์คํ์ ๊ฒฝ์ฐ ๋ช
๋ น์ dotnet test
dotnet test
IDE( ref dotnet/cli#1376 )์์ Discover/debug/etc์ ๋ํ ์ง์์ ์ ๊ณตํด์ผ ํ๋ ์ฌ๋์
๋๋ค.
๊ทธ๊ฒ์ด ํ์ฌ์ ๋ฐฉ๋ฒ์ด๋ฉฐ dnx๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ( #927์ ๋ซ์์ผ ํจ) aspnet ๋ฐ dnx๋ .NET CLI๋ก ์ด๋ํ๊ณ ์์ต๋๋ค.
dotnet test
ํ์ํ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ dotnet-test-nunit
dotnet test
dotnet-test-xunit
์ ๋์ผ(https://github.com/xunit/coreclr.xunit/pull/1 ์ฐธ์กฐ)
xunit ํ
์คํธ ํ๋ก์ ํธ์ ๋ํ ์์ project.json
(https://github.com/dotnet/cli ๋ด๋ถ์ ์ฐธ์กฐ ํ
์คํธ)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-23911",
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-dev-91790-12"
},
"frameworks": {
"netstandardapp1.5": { }
},
"testRunner": "xunit"
}
testRunner
์์ฑ์ dotnet test
( ref source )์์ ์ฝ๊ณ dotnet-test-{testRunner}
/cc @piotrpMSFT @livarcocc ๋ .NET CLI ๋ฐ dotnet-test, dotnet-test-xunit์์ ์์ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ์ ๋ณด๊ฐ ์ข์ต๋๋ค.
๋น์ ๊ณผ @piotrpMSFT ๊ฐ ๊ด์ฐฎ๋ค๋ฉด ์ ๊ฐ ๋์๋๋ฆด ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ #927๋ก ์งํํ๊ธฐ ์ ์ .NET Core๊ฐ ์กฐ๊ธ ์์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๋๋ฐ, ์ด๊ฒ์ด ์๋ก์ด ์ ๋ชฉ๊ณผ ์ ๋ณด๋ก ์ ๋ฐ์ดํธ๋์ง ์์ ์ด์ ์ ๋๋ค. ์์ผ๋ก ์งํํ๊ธฐ ์ ์ //build์์ ๋ฐํ๋ ์ ์๋ ๋ชจ๋ ๋ฐํ๋ฅผ ๊ธฐ๋ค๋ฆด ๊ณํ์ด์์ง๋ง ๋์์ ๋ฐ์ ์ ์์ผ๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋ด ๊ณํ์ .NET Core, UWP ๋ฐ Xamarin์ ํฌํจํ์ฌ ์ฌ ์ฌ๋ฆ 3.4 ๋ฆด๋ฆฌ์ค๋ก ๋ ๋ง์ ํ๋ซํผ์ ๋ํ ์์ ํ ์ง์์ ์ ๊ณตํ๊ธฐ ์์ํ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ ์์ฑ๋ ์์ฝ์ ์ ๊ณตํ์ผ๋ฏ๋ก #927์ ๋ซ๊ณ ์ด ๋ฌธ์ ๋ฅผ ์์ผ๋ก ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํด ๋์์ ์ํ์๋ฉด ์กฐ์ ํด ๋๋ฆด ์ ์์ง๋ง ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ด ํ๋ก์ธ์ค์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ NUnitLite ๋ฐ ํ์ฌ Xamarin ๋ฌ๋์ ๊ฐ์ NUnit ํ๋ ์์ํฌ์ ํน์ ๋ฒ์ ์ ๋ฐ์ ํ๊ฒ ๋ฐ์ธ๋ฉ๋์ง ์๊ณ ํ ์คํธ๋ฅผ ๋ก๋ํ๊ณ ์คํํ ์ ์๋ PCL ๋๋ผ์ด๋ฒ/์์ด์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ์์ง ์ด๊ธฐ ๋จ๊ณ์ด์ง๋ง nunit.portable.agent ํ๋ก์ ํธ์์ ์งํ ์ค์ธ ์์ ์ ๋๋ค.
@piotrpMSFT ๋๋ @livarcocc ๊ฐ ์ค ์ ์๋ ๋ชจ๋ ๋์์ด๋ ์กฐ์ธ๋ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
@rprouse dotnet ํ ์คํธ์ ๋ฌ๋ ๊ฐ์ ์ํธ ์์ฉ ๋ฐ ์๊ตฌ ์ฌํญ์ ๋ํ ๋ ๋์ ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ์ํด CLI์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. ์ค๋ ๋๋ ๋ด์ผ ์๋ฃํ๊ณ ์ฌ๊ธฐ์ ๋งํฌ๋ฅผ ๊ฑธ์ด๋๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ฒ๊ทธ๋ฅผ ์ถ์ ํ๋ ๊ฒ์ ๋๋ค: https://github.com/dotnet/cli/issues/1803.
์ด๊ฒ์ ์ด๋ป๊ฒ ์งํ๋๊ณ ์์ต๋๊น? ์ด๊ฑฐ ์จ๋ณด๊ณ ์ถ์๋ฐ dotnet cli ์ํ๊ณ๊ฐ ์์ ํ๋๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ฝ๊ฐ์ ์ง์ ์ ์ด๋ฃจ๊ณ ์์ง๋ง RC2๊ฐ ๋จ์ด์ง ๋๊น์ง ๋๋ฌด ๋ง์ ์ผ์ ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋๋ ๋ณํ๋ฅผ ๋ฐ๋ผ๊ฐ๋ ค๊ณ ํ๋ ๊ฒ์ด ์ง๊ฒน๋ค :smile:
.NET Core RC2๊ฐ ๋ฆด๋ฆฌ์ค ๋์์ผ๋ฉฐ ์๋ก์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐธ๊ณ ์ฉ ๋งํฌ.
์ ๊ฐ ๋์๋๋ฆด๊น์? ์ด๊ฒ์ StackExchange.Redis์ ๊ฐ์ ์ผ๋ถ ํฌํธ๋ฅผ ์๋ฃํ๊ธฐ ์ํ ์ฐจ๋จ๊ธฐ์ ๋๋ค.
@NickCraver ํ์คํ ๋์์ด ๋ ์ ์์ต๋๋ค. ํต์ ํ๋กํ ์ฝ์ ์ฒ์ ์ฝ์ด๋ ์ํฉ์ด ๋งค์ฐ ๋ช ํ
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์ด ๋ฌธ์ ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ .NET Core๋ฅผ ๋์์ผ๋ก ํ๋ ์ด์ ๊ฐ๋ฅํ ๋น๋๊ฐ ์์ง๋ง ์ ํ์ ์ ๋๋ค. ํ๋ ์์ํฌ์ ํต์ฌ ๋น๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ๊ณ ์์ง๋ง ํ์ํ์ง ํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ dotnet
๋ช
๋ น์ ๋ํ ํ
์คํธ ํ์ฅ์ ๋ง๋๋ ๋ฐ ํ์ํ ์ฌํญ์ ์ดํด๋ด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก nunit3-console์ด .NET Core ๋จ์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋๋ก nunit ์์ง์ด ํต์ฌ nunit-agent๋ฅผ ์คํํ๊ณ ํต์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ์์ ์ ํ๊ณ ์์ง๋ง ์์ง ํด์ผ ํ ์ผ์ด ๋ง์ต๋๋ค.
์ด๋ป๊ฒ ๋์์ฃผ์๊ฒ ์ต๋๊น?
@rprouse ํฌ๋ก์ค ํ๋ซํผ์ ์ฌ์ฉํ๋ ค๋ฉด ํต์ฌ ๋น๋๊ฐ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
๋จ์ ์์ ๋์ ๊ฐ์ํ ๋ ์์งํ ๋งํด์ ๋ค๋ฅธ ๊ณณ์ ํฌ์ํ๋ ๊ฒ๊ณผ ๋น๊ตํ ๋ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ ํฌ์ํ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ์ฌ๋ก์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฑ์ ๋น๋ํ๊ธฐ ์ํด ๋๊ธฐ ์ค์ธ ๋ง์ ๋ค์ด์คํธ๋ฆผ ์ฌ๋๋ค์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณต๊ฐํด์ผ ํฉ๋๋ค. ์ด ๋ง์ ํ๊ณ ์ถ์ง๋ ์์ง๋ง ์ฌ๊ธฐ์ ์๋ ์ง์ฐ๊ณผ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ํญ๋ชฉ์ ๊ณ ๋ คํ ๋ ๋ชจ๋ ๊ฒ์ xUnit์ผ๋ก ์ด์ํ๋ ์์ ์ ์๋ฃํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฐฑ์์ ์์ฒ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฌ๊ธฐ์์ ์ฐจ๋จ๋ ๋ฆด๋ฆฌ์ค ์ฒด์ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ์์ ๋๊ณ ์๊ฐ์ด ํ๋ฝํ ํ์ ์ด๊ฒ์ ๋ค์ ๋ฐฉ๋ฌธํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ (๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ํ๋ ธ๋ค๋ฉด ์ ๋ฅผ ์์ ํ์ญ์์ค) ์ง๊ธ ์ฐ๋ฆฌ๋ ๋ด๊ฐ' d ์ด๊ฒ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํธ๋ฅผ ๋ฐฐ์กํ ์ค๋น๊ฐ ๋์์ผ๋ฉด ํ๋ ๋ฐ๋จ์ ์คํํ ์ ์์ต๋๋ค. ์๊ฐ์ ์๋ฌด๋ผ๋ ๊ด์ ์์, ๋๋ ๋จผ์ ์ฌ๋๋ค์ ์ฐจ๋จ ํด์ ํ ๋ค์ ๋ด๊ฐ ํ ์ ์๋ ํ ์ ์คํธ๋ฆผ์ ๋์์ผ ํฉ๋๋ค.
@NickCraver ๊ฐ xUnit์ผ๋ก ํฌํ ํ๋ ๋ฐ ๋ ธ๋ ฅ์ NUnit 3์ ์ฌ์ฉํ์ฌ .NET Core ํ ์คํธ ์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ธ๋ก๊ทธ์ ๊ฒ์ํ์ต๋๋ค.
๋๋ ๋ช ๊ฐ์ง ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์ํด ๊ทธ๋ ๊ฒํ๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ฅ์ ์ ๋๋ค.
์ ์ ํ dotnet-test-nunit ๋น๋๋ฅผ ์ป์ ์ ์๋๋ก ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ํํ์ ๋ฐ์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ํ๋กํ ์ฝ์ ์ ์๋ ๊ณ์ฝ์ ๋๋ถ๋ถ์ ์ด๋ฏธ ๋์ฐ๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ๋์ด ์์ต๋๋ค. ์๋ํ๋ xplat nunit ๋ฌ๋๊ฐ ์๋ค๋ฉด ์ด๊ฒ์ ๊ฑฐ์ ์์ ์ด ์๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ ๋จ๊ณ๋ก ๋๋๋ ๊ฒ์ด ๋์์ด ๋ ๊น์? ์ผ์ข ์ "๋น ๋ฅด๊ณ ๋๋ฝ๊ณ , ์๋ฑํ ํดํน์ด ์์ ์ ์์ง๋ง, ์ต์ํ ๋ญ๊ฐ๋ฅผ ๊บผ๋ด์" ๋ฆด๋ฆฌ์ค์ ๋์ค์ ๋ ์์ ํ ํตํฉ์ด ์ด๋ฃจ์ด์ง๋๊น?
(์๋ฅผ ๋ค์ด, netstandard1.3์ TFM์ผ๋ก ํ ์คํธ๋ฅผ ๋น๋ํ๋ ค๊ณ ํ๋ฉด Noda Time์ ๋ํ ์ฐจ๋จ์ ํด์ ํ๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.)
@jskeet ๊ณผ @NickCraver ๋ @rprouse๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ NUnitlite "hack"์ ํตํด ์ค๋ NUnit์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ๋ Npgsql์ ๋ํด ์ ์ ๋์ ์ด ์์ ์ ์ํํด ์์ผ๋ฉฐ ์ ์๋ํฉ๋๋ค. ์๋ฒฝํ ์๋ฃจ์ ์ ์๋์ง๋ง ํ์คํ ์ฐจ๋จ ํด์ ํด์ผ ํฉ๋๋ค.
@roji : dnxcore50
์ ํจ๊ป ์๋ํ์ต๋๋ค(์ ๋ ์ ์ ๋์ Noda Time๊ณผ ํจ๊ป ์ฌ์ฉํ์ต๋๋ค) - ํ์ง๋ง netstandard1.3
๋ฅผ ์ฌ์ฉํ๋ฉด NUnit ๋ฐ NUnitLite์ ๋ํ ์ข
์์ฑ์ด ์ ํจํ์ง ์์ต๋๋ค.
@jskeet ๋ด ํ
์คํธ ํ๋ก์ ํธ๋ netcoreapp1.0์ ๋์์ผ๋ก ํ๋ฉฐ Nunit+NUnitLite 3.2.1์ ์์กดํฉ๋๋ค. ๋๋ "imports" : [ "dotnet54" ]
์๊ณ ๊ทธ๊ฒ์ ๋งค๋ ฅ์ฒ๋ผ ์๋ํฉ๋๋ค...
@roji : ๊ฐ์ฌํฉ๋๋ค... ์๊ฐ๋ฝ์ด ์๊ฐ
@roji : ์ค์ ๋ก ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ผ ํ ์๋ก์ ํ ์คํธ ํ๋ก์ ํธ์์ ์ด ์์ ์ ์ํํ๋ ์์น์ ์ฐ๊ฒฐํ ์ ์์ต๋๊น?
@jskeet , ์ฌ๊ธฐ ์์ต๋๋ค: https://github.com/npgsql/npgsql/tree/dev/test/Npgsql.Tests
@jskeet ๊ฐ์ ธ
@piotrpMSFT ์๊ฐ์ ์ ์ฝํ๊ณ dotnet-test-nunit
์์ฑ์ ์ํ ๋์ฐ๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ ค ์ฃผ์๊ฒ ์ต๋๊น? ๊ฒ์ํ ์ ์์ง๋ง ํ์ฌ ๋ช ๊ฐ์ง ์ฌํญ์ ์ถ์ ์ค์ด๋ฏ๋ก ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋น์ ๋ ๋ฐ์์ค ํ
๋ฐ, ์์ ์์ผ๋ฉด ์๊ฐ์ ๋ค์ด์ง ๋ง๊ณ ์ฐพ์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ด์ฌ ์๋ ์ฌ๋์ ์ํด NUnit 3 ๋ฅผ
@jskeet ์๋ project.json์ import ๋ฌธ์ด ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ .NET Core ํ ํ๋ฆฟ์ ์ถ๊ฐ๋์ง๋ง ์ ๊ทธ๋ ์ด๋ํ ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ฝ์ ๋ฌ๋์ project.json์ ๊ฒฝ์ฐ;
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
๋๋ ์ด์ ๋ธ๋ฆฌ์์;
"frameworks": {
"netstandard1.5": {
"imports": "dnxcore50"
}
RC2๋ก ์ ๊ทธ๋ ์ด๋ํ ๋ ๊ฒฝ๋ก์ ์ค๋๋ DNX ํญ๋ชฉ์ด ์๋ ๊ฒ๋ ์ ๋ฅผ ๋ฌผ๋ ธ์ต๋๋ค. ํ์ธํ ์ฌํญ์ ๋๋ค.
@rprouse : ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋น๋ํ ์ ์์ผ๋ฉฐ ํ
์คํธ๋ Windows์์ ์คํ๋ฉ๋๋ค. Linux์์ "๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ก ์ค์ ๋์ง ์์"์ด ํ์๋ฉ๋๋ค. dotnet run
์ ๋ํ ๋ฉ์์ง์
๋๋ค. ๋ ์กฐ์ฌํด์ผ ํฉ๋๋ค. ๋์ผํ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ต์ ์ํ์ ์๋ํฉ๋๋ค...
@jskeet , ์ฐ๋ฆฌ๋ ๋ฌธ์ ์์ด Windows์ Linux ๋ชจ๋์์ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ ์ ์ฌ๊ธฐ ๋ฅผ ์ฐธ์กฐ ํ์ญ์์ค .
@oschwald : ์, "Object reference not set..." ๋ฌธ์ ๋ ์ข ์์ฑ๊ณผ๋ ๋ณ๊ฐ์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋ฅ ๋ฉ์์ง๊ฐ (์คํ ์ถ์ ๋ ์์ด) ๋์์ด ๋์ง ์๋๋ค๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค. ์์ธํ ์ดํด๋ณด๊ณ ์์ต๋๋ค.
@jskeet ๋ช ๊ฐ์ง ์์ธ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ๋น์ ์ ๊ฒ์ ๋๊น? https://github.com/dotnet/cli/issues/3075
@NickCraver : ์๋์ค -
์ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ํ ์ข ์์ฑ ์์ด ์๋ํ์ง๋ง ์คํจํ๋ project.json ํ์ผ์ด ์์ต๋๋ค. ์์ ํ ์ฌํ์ ์ํด ์๊ฐ์ ๋ ํฌ์ํด์ผ ํฉ๋๋ค.
@jskeet Gotcha - ๊ด๋ จ: https://github.com/dotnet/cli/issues/2469 ๋ฐ Slack ์ฑ๋ ์ project.json
๋ผ์ด๋ธ ๋๋ฒ๊ทธ์ ์ ํฉํฉ๋๋ค. ์์ ์ ํจ๊ป ์ฐธ์ฌํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๊ฝค ๋นจ๋ฆฌ ์์ํ ์ ์์ต๋๋ค. Slack์ ๊ฒฝ์ฐ #general ๋ฐ #dotnet-core ์ฑ๋์ด ๊ฝค ํ์ฑํ๋์ด ๋ง์ ์ฌ๋๋ค์ด ์ด ๊ณผ์ ์ ๊ฑฐ์น๊ณ ๋ค์ ์ฌ๋์ ๋์ต๋๋ค.
ํ ... ์ด์ ์๋ํฉ๋๋ค. @NickCraver๊ฐ ๋ณด๊ณ ํ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ dotnet restore
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ชป๋ ํ๋ก์ ํธ๋ฅผ ์ํํ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ด์จ๋ , ๋๋ ์ง๊ธ Linux์์ Noda Time ํ
์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ yay :) ๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค.
@piotrpMSFT ๋ ํฌ์ธํฐ์ ๋ํ ์์ฒญ์ผ๋ก ํ์ํ ๋ชจ๋ ๊ฒ์ ์ฐพ์๊ณ ์์ ์ ์์ํ์ต๋๋ค.
nunit/dotnet-test-nunit#1์ dotnet-test-nunit
์ฃผ์์ ๋ํ ์ด๊ธฐ PR์ ์ถ๊ฐํ์ต๋๋ค.
ํ ์คํธ๋ฅผ ํ์ํ๊ณ ์คํํ์ง๋ง ์ฌ์ ํ ์ผ๋ถ ์์ , ์ ๋ฆฌ ๋ฐ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค. ๋๊ตฌ๋ ์ง ๊ฐ์ง๊ณ ๋๊ณ ์ถ๋ค๋ฉด ๋น๋ ์ํฐํฉํธ์ ๋ํ NuGet ํผ๋์ ๋ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
Visual Studio์์ ๋ก๋ํ ๋ NuGet ํจํค์ง๋ฅผ ๋๋ฒ๊น ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ๋์์ ๋ฐ์ ์ ์์ต๋๋ค. ์ง๊ธ๊น์ง๋ Visual Studio์์ ์คํ๋๊ณ ์์ง ์์ง๋ง ์ค์ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค.
@rprouse : ์ ์ฉํ๋ค๋ฉด Noda Time์ด ์ด๋ป๊ฒ ๋์ฒํ๋์ง ๋ณด๊ณ ์ถ์ต๋๋ค. ํน๋ณํ ํ์ธํ์ผ๋ฉด ํ๋ ์ฌํญ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค. ๋ชจ๋ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์์ง ๋ณธ๊ฒฉ์ ์ธ ์ค๋น๊ฐ ๋์ง ์์์ง๋ง ์ฝ์๊ณผ Visual Studio์์ NUnit .NET Core ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์ํ๋ฅผ ์ป๊ธฐ ์ ์ ํด๊ฒฐํด์ผ ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์์ง๋ง, ์ด์ฌํ ์์ ์ด ์๋ฃ๋๊ณ ์ธ๋ถ ์ฌํญ์ ์ด๋ฅด๊ธฐ๊น์ง ์ฐ๋ฆฌ๋ ์ด์ ํจ์ฌ ๋ ๊ฐ๊น์์ก์ต๋๋ค.
๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์์ ํ ํ CI ๋น๋๋ก ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ์ฌ๋๋ค์ด ํ์ด์ด๋ฅผ ๋ฐ๋ก ์ฐจ๊ณ ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๋ฐ ๋์์ ์ค ์ ์๋ค๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ ์คํฌ๋ฆฐ์ท์ด ์์ต๋๋ค.
@rprouse : CI ๋น๋์ ์ง์ ์ด ์์ต๋๊น? ํ์คํ ํ์ด์ด๋ฅผ ๊ฑท์ด์ฐจ๊ณ ์ถ์ดํฉ๋๋ค. Noda Time์ _ํฉ๋ฆฌ์ ์ธ_ ์์ NUnit ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฏ๋ก ์ด์จ๋ ์ข์ ์์์ด ๋ ๊ฒ์ ๋๋ค. VS์์ ๋ค์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๊ธฐ๋ฅผ ์ ๋ง๋ก ๊ณ ๋ํ๊ณ ์์ต๋๋ค. (Roslyn์ฉ NCrunch ๋ฐ CodeRush๋ ์ถ์๋๋ฉด ์ง์์ ์์ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค...)
@jskeet ๋ฐ ์ํ๋ฅผ ์ถ์ํ๊ธฐ ์ ์ ํ
์คํธ๋ฅผ ๋์์ฃผ๊ณ ํ์ด์ด๋ฅผ ๊ฑท์ด์ฐจ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด dotnet-test-nunit
๋ถ๊ธฐ์ ๋ฐ๋ชจ ์ ์ฅ์ ๋ฅผ dotnet-test-nunit
๋ฌ๋๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
nunit/dotnet-test-nunit ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ์ธ์.
๋์ ์์ค์ ์ง์นจ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์
๋ฐ์ดํธ: ์ด์ dotnet-test-nunit
๋ฅผ NuGet์์ ์ํ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Include prereleases
ํ์ธ์. ๋ ์ด์ nuget.config
ํ์ผ์ ์
๋ฐ์ดํธํ ํ์๊ฐ ์์ต๋๋ค.
dotnet-test-nunit
๋ ์์ง ๊ฐ๋ฐ ์ค์ด๋ฏ๋ก NUnit CI NuGet ํผ๋์์ NuGet ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ค๋ฉด NuGet.Config
ํ์ผ์ ์๋ฃจ์
์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ํ
์คํธ ํ๋ก์ ํธ์ project.json
๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
{
"version": "1.0.0-*",
"dependencies": {
"NUnitWithDotNetCoreRC2": "1.0.0-*",
"NETStandard.Library": "1.5.0-rc2-24027",
"NUnit": "3.2.1",
"dotnet-test-nunit": "3.4.0-alpha-1"
},
"testRunner": "nunit",
"frameworks": {
"netstandard1.5": {
"imports": [
"dnxcore50",
"netcoreapp1.0",
"portable-net45+win8"
]
}
},
"runtimes": {
"win10-x86": { },
"win10-x64": { }
}
}
์ฌ๊ธฐ์ ๊ด์ฌ ์๋ ๋ผ์ธ์ dotnet-test-nunit
์ ๋ํ ์ข
์์ฑ์
๋๋ค. -CI
๋๋๋ ์ต์ ์ํํ ๋ฒ์ ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ญ์์ค. ์ด๋ master ๋ธ๋์น์ ์ต์ ๋ฒ์ ์
๋๋ค.NUnitWithDotNetCoreRC2
์ข
์์ฑ์ ํ
์คํธ ์ค์ธ ํ๋ก์ ํธ์
๋๋ค.
NUnit 3์ ํ
์คํธ ์ด๋ํฐ๋ก ์ง์ ํ๊ธฐ ์ํด "testRunner": "nunit"
๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ํ ํ
์คํธ ์ด๋ํฐ์ NUnit์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก runtimes
๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค. ๋ด๊ฐ ์ ๊ทธ๋ ๊ฒ ํด์ผ ํ๋์ง ์ค๋ช
ํ ์ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
์ด์ Visual Studio ํ
์คํธ ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ช
๋ น์ค์์ dotnet test
๋ฅผ ์คํํ์ฌ ํ
์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
# Restore the NuGet packages
dotnet restore
# Run the unit tests in the current directory
dotnet test
# Run the unit tests in a different directory
dotnet test .\test\NUnitWithDotNetCoreRC2.Test\
๋ด๊ฐ ๋งํ๋ฏ์ด ์ด๊ฒ์ ์์ง ๊ฐ๋ฐ ์ค์
๋๋ค. ์์ ๋์ด๋ dotnet-test-nunit
๋ฒ์ 3.3.0.39-CI์๋ TestResult.xml
ํ์ผ์ ์ ์ฅํ๋ ค๊ณ ํ ๋ ArgumentException
๋ฐ์ํ๋ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
๋ํ dotnet
๋ช
๋ น์ค์ ๋น ์ค์ ์ผํค๊ณ ์์๊ณผ ํจ๊ป ์๋ํ์ง ์์ต๋๋ค. NUnit ํ
์คํธ ๋ฌ๋์ ์ถ๋ ฅ์ ์์์ผ๋ก ํ์๋์ง๋ง ๋ณผ ์ ์์ต๋๋ค.
"๋น ์ค ์ผํค๋" ๋ถ๋ถ์ ์๋ ค์ง ๋ฒ๊ทธ์ ๋๋ค: https://github.com/dotnet/cli/issues/2234
@jskeet ๋งํฌ ๊ฐ์ฌํฉ๋๋ค. ์์๋ ์๋ ค์ง ๋ฒ๊ทธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
ArgumentException
๊ฐ 3.3.0.49-CI
์์ ์์ ๋์์ต๋๋ค. ์์ ์ง์นจ์ ์์ ์ฌํญ์ผ๋ก ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ๋ ๋ค๋ฅธ ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ๋ ํ์ฌ ๋ฌ๋์ ํ
์คํธ์ ์ค ๋ฒํธ๋ฅผ ์ ๊ณตํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ Visual Studio ํ
์คํธ ํ์๊ธฐ์์ ํ
์คํธ๋ฅผ ํด๋ฆญํด๋ ์ฝ๋๋ก ์ด๋ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค.
--where
๋ฑ๊ณผ ๊ฐ์ ๋ช
๋ น์ค ์ธ์ ์ง์์ด ์์ง ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ๋ง์ต๋๊น? (์ด์ฐฝ๊ธฐ๋ผ๋ ๊ฒ์ ์ถฉ๋ถํ ์ดํดํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ํ ์ ์๋ ์ผ์ธ์ง ํ์ธํ๋ ค๊ณ ํฉ๋๋ค.)
๋๋ ๋น์ ์๊ฒ ์ฝ๊ฐ ๋ค๋ฅธ project.json
๋ฅผ ์๋ํ์ต๋๋ค. ์๋์ ๊ทธ๋๋ก ํฌํจ์์ผฐ์ง๋ง ์ค์ํ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
netcoreapp1.0
๋์ netstandard1.5
"type"="platform"
์ ํจ๊ป Microsoft.NETCore.App
์ข
์์ฑ์ ํฌํจํ์ต๋๋ค.{
"buildOptions": {
"keyFile": "../../NodaTime Release.snk",
"embed": {
"include": [
"TestData/*"
]
}
},
"configurations": {
"Debug": {
"buildOptions": {
"define": [ "DEBUG", "TRACE" ]
}
},
"Release": {
"buildOptions": {
"define": [ "RELEASE", "TRACE" ],
"optimize": true
}
}
},
"dependencies": {
"NodaTime": { "target": "project" },
"NodaTime.Testing": { "target": "project" },
"NUnit": "3.2.1",
"dotnet-test-nunit": "3.3.0.49-CI",
"Microsoft.CSharp": "4.0.1-rc2-24027",
"System.Dynamic.Runtime": "4.0.11-rc2-24027",
"System.Reflection.Extensions": "4.0.1-rc2-24027",
"System.Xml.XDocument": "4.0.11-rc2-24027"
},
"testRunner": "nunit",
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.Runtime": "",
"System.Threading.Tasks": "",
"System.Xml.Linq": ""
}
},
"netcoreapp1.0": {
"imports" : [ "dnxcore50", "netcoreapp1.0", "portable-net45+win8" ],
"buildOptions": {
"define": [ "PCL" ]
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"System.Console": "4.0.0-rc2-24027",
}
}
}
}
๊ฒฐ๊ณผ:
Test Count: 15141, Passed: 15141, Failed: 0, Inconclusive: 0, Skipped: 0
์ฐํธ. (net451์ ์ฌ์ฉํ์ฌ 15646์ ํ ์คํธ ์นด์ดํธ๋ฅผ ์ป์์ต๋๋ค. ์ด๋ ์ ๊ฐ ์์ํ ๊ฒ์ ๋๋ค.)
๋ค์์ผ๋ก: Linux ์์คํ ์์ ๋์ผํ ์์ ์ ์๋ํฉ๋๋ค(์ฌ๊ธฐ์ project.json์ Linux๋ฅผ ์ธ๊ธํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ์์ด๋ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. dotnet CLI๋ ๋ค์ ํ์ํฉ๋๋ค).
ํ . 14๋ถ ๋์ CPU๋ฅผ 100% ์๋ชจํ ํ์๋ Linux์์ ํ ์คํธ๊ฐ ์๋ฃ๋์ง ์์์ต๋๋ค. ๊ทธ๊ณณ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ ์์ธํ ์ดํด๋ณผ ํ์๊ฐ ์์ต๋๋ค.
@jskeet
--where ๋ฑ๊ณผ ๊ฐ์ด ์์ง ๋ช ๋ น์ค ์ธ์ ์ง์์ด ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ๋ง์ต๋๊น?
์ ๋๋ก ํ
์คํธ๋์ง ์์์ง๋ง --where
์ ๋๋ถ๋ถ์ ์ผ๋ฐ์ ์ธ ๋ช
๋ น์ค ๋งค๊ฐ๋ณ์๋ฅผ ์ฐ๊ฒฐํ์ต๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. nunit/dotnet-test-nunit#4๊ฐ ๋ชจ๋ ์ ๋๋ก ์ฐ๊ฒฐ๋์ด ์๊ณ ์๋ํ๋์ง ํ์ธํ๊ณ ๋๋ฝ๋ ํญ๋ชฉ์ ์ถ๊ฐํฉ๋๋ค. ์ง๊ธ๊น์ง ๋ง์ ๊ฒ์ ํ
์คํธํ์ง๋ ์์์ง๋ง dotnet
๋ช
๋ น์ ๋์ ์ถ๊ฐํ์ฌ ๋ช ๊ฐ์ง๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋๋ ์ ํํ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์๋ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด --debug
๋ช
๋ น์ค ์ต์
์ dotnet-test-nunit
์๋ฃจ์
์์ ์ ๋๋ก ์๋ํ์ง๋ง ํ
์คํธ ์๋ฃจ์
์์ ์คํํ๋ฉด dotnet-test Error: 0 : Microsoft.DotNet.Cli.Utils.CommandUnknownException: No executable found matching command "dotnet-test-"
๋ฐ์ํฉ๋๋ค. ๋ํ ์ง์๋๋ ํญ๋ชฉ์ ํ์ํ๊ธฐ ์ํด ๋์๋ง ๋ช
๋ น์ค์ ์ฐ๋ฆฌ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ ๋ชจ๋ฆ
๋๋ค.
๊ทธ๋์ https://github.com/nunit/dotnet-test-nunit/blob/master/src/dotnet-test-nunit/CommandLineOptions.cs ์์ ๋ด๊ฐ ์๊ฐํ๋ ๋ช ๋ น์ค ์ต์ ์ ํ์ธํ ์ ์์ต๋๋ค. ์ง์:์ค๋ง์ผ:
์, ์ - dotnet test
์๋ ํ
์คํธ ํ๋ ์์ํฌ์ ๋ํ ์ธ์๋ฅผ dotnet test
์์ฒด์ ๋ํ ์ธ์์์ ๋ถ๋ฆฌํ๊ธฐ ์ํ dotnet run
์ ๋์ผํ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๋
ธ๋ ฅํ๋ค
dotnet test -- --help
๊ทธ๋ฆฌ๊ณ
dotnet test -- --where=cat!=Slow
๊ทธ๋ฅ ์ฌ์ฉ
dotnet test --where=cat!=Slow
์ ์๋ํฉ๋๋ค. ์ด์ ๋ํ ๊ธฐ๋ฅ ์์ฒญ์ ์ ์ถํ ์์ ์ ๋๋ค. ์์ ํ ๋ช ํํ ์ ์์ด์ ์ข์ต๋๋ค.
ํ
์คํธ๋ฅผ ํด๋ฆญํ๊ณ ์ฝ๋๋ก ์ด๋ํ๋ ๊ฒ์ ์ด์ 3.3.0.60-CI
์์ ์์ ๋์์ต๋๋ค.
์ฌ์ ํ ์ฐ์ ์์๊ฐ ๋์ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ์ํ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํํ ๊ณํ์ด๋ฉฐ ์ด ์์ ์์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ณ ์ ์ ์ฅ์์ ๋ชจ๋ ๊ฒ์ ์ถ์ ํ ๊ฒ์ ๋๋ค. ๋ ๊ฐ์ง ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ค๋ Ubuntu ์์์์ Noda Time ํ ์คํธ๋ฅผ ๋ค์ ์คํํ์ผ๋ฉฐ ์ฝ 15๋ถ ํ์ ์๋ฃ๋์์ต๋๋ค. Win10 i7๋ณด๋ค Linux i5์์ ๋ชจ๋ 5-6๋ฐฐ ๋๋ฆฌ๊ฒ ์คํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ด CPU์ ์ผ๋ง๋ ๊ด๋ จ์ด ์๊ณ JIT์ ์ผ๋ง๋ ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ์คํ NUnit์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. :)
@jskeet ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ข์ ์์์ ๋๋ค. nunit/dotnet-test-nunit#9์ ํ์๋ ๋๋ก Linux ํ ์คํธ์ ๋ชจ๋ ธ ๋ฐ์ธ๋ฉ์ด ํ์ํ์ต๋๊น?
ํ
์คํธํ๋ ์ฌ๋์ ์ํด ์ต์ NuGet ํจํค์ง๋ 3.3.0.69-CI
์
๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธํ์ญ์์ค. ํ์ฌ ๋ฆด๋ฆฌ์ค๋ฅผ ์ฐจ๋จํ ๋งํผ ์ฌ๊ฐํ๋ค๊ณ ์๊ฐ๋๋ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ ์์ต๋๋ค. ์ด๋ฒ ์ฃผ์ ๋ณด๊ณ ๋ ๊ฒ์ด ์์ผ๋ฉด ์ด๋ฒ ์ฃผ ๋ง์ด๋ ๋ค์ ์ฃผ ์ด์ ์ํ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ณ ํฅํ ํ ๋ก /๋ฌธ์ ๋ dotnet-test-nunit
๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ณ์๋ ์ ์์ต๋๋ค.
์ง๊ธ ํ ์คํธํ๊ฑฐ๋ ์์ํ ํํ๋ฅผ ์ ์งํ์ญ์์ค :์ค๋ง์ผ:
@rprouse : Mono์์ ์คํ์ ์๋ํ์ง ์์์ต๋๋ค. Linux์ .NET Core ์ ์ฉ์ ๋๋ค. ์์ ์ ํํ project.json์์ ์ ์๋ํ์ต๋๋ค.
69-CI์ ์์ฉ๋์ด๋ฅผ ์ค ๊ฒ์ ๋๋ค...
์ด๊ฒ๊ณผ ์ฝ์ ์ฑ ๋ฌ๋ ์ฌ์ด์ ๋ด๊ฐ ์์์ฐจ๋ฆฐ ํ ๊ฐ์ง ์ฐจ์ด์ ์ "dotnet test" ๋ฒ์ ์ ์ ์ฒด ๊ธฐ๊ฐ์์ ํ
์คํธ๋ฅผ ์ฐพ๋ ๋ฐ ์์๋ ์๊ฐ์ ํฌํจํ๋ ๋ฐ๋ฉด NUnitLite์ ํจ๊ป ์ฌ์ฉํ๋ "dotnet run" ๋ช
๋ น์ ๊ทธ๋ ์ง ์๋ค๋ ๊ฒ์
๋๋ค. . Noda Time์์ ์ด๊ฒ์ ๋ด๊ฐ --where=cat==Foo
์คํํ๋ฉด(ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ์ด๋ฌํ ํ
์คํธ๊ฐ ์์) "dotnet test"๋ 14์ด์ ๊ธฐ๊ฐ์ ๋ณด๊ณ ํ๋ ๋ฐ๋ฉด "dotnet run"์ 0.01์ด์ ๊ธฐ๊ฐ์ ๋ณด๊ณ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ ๋ค ๊ฑฐ์ ๋์ผํ ์ค์ ๊ฒฝ๊ณผ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ด๊ฒ์ ์๋์ ์ธ๊ฐ? ๋๋ ํ์คํ ๊ทธ ํ๋์ ์ ๊ฒฝ ์ฐ์ง ์์ง๋ง ์ฌ๋๋ค์ด ์ค์ ๋ก ๋๋ฆฌ๋ค๊ณ ์๊ฐํ์ง ์๋๋ก ์ด๋๊ฐ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
@jskeet ์ข์ ๊ด์ฐฐ์ ๋๋ค. ์ค์ ๋ก ๊ทธ๋ ์ต๋๋ค. ํ ์คํธ๋ฅผ ์คํํ ์ ์ฒด NUnit ์์ง์ด ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ ๋จ์ํ์ง๋ง ํ ์คํธ ์คํ์ ๋ํํ๋ ๋์ ์ฒซ ๋ฒ์งธ ํ ์คํธ ์์ ์ด๋ฒคํธ์์ ์๊ณ๋ฅผ ์์ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ ๋ ฅํ๊ฒ ์ต๋๋ค.
https://www.nuget.org/packages/dotnet-test-nunit/3.4.0-alpha-1 ์ GitHub์์ dotnet-test-nunit
์ํ ๋ฒ์ ์ ๋ฆด๋ฆฌ์คํ์ผ๋ฏ๋ก ๋ ์ด์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. NuGet.config
ํ์ผ์ ๋ง๋ค๊ณ CI ๋ฆด๋ฆฌ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด์ ์ํ๊ฐ ๋์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. https://github.com/nunit/dotnet-test-nunit/issues ์์ ์ํ๋ฅผ ํ ์คํธํ๊ณ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๋๋ก ๋์์ฃผ์ธ์
dotnet-test-nunit
์ ๋ํ ์ถ๊ฐ ์ ๋ณด์ ์ค๋ช
์๋ฅผ ์
๋ฐ์ดํธํ์ต๋๋ค. ์ต์ ์ํ๋ก ์ ์งํ๊ฒ ์ต๋๋ค.
์ด์ ์ ์ธ๊ธํ๋ฏ์ด "Microsoft.NETCore.App"
์ข
์์ฑ์ ๋ํด "type": "platform"
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐํ์์ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค. xUnit ๋ฌธ์๋ฅผ ๊ฐ์ํ ๋ ์ด๊ฒ์ด ์ ํธ๋๋ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ฌ Travis๋ฅผ ํตํด ์คํ ์ค์ธ ํ ๋ฆฌํ์คํธ๊ฐ ์์ต๋๋ค. ๋ น์์ด ๋๋ฉด Noda Time์ด ์ด์ ์์กดํ๋ฏ๋ก _์ผ๋ถ_ ์ฌ์ฉ๋์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์๊ณ ํ์ จ์ต๋๋ค ์ ์๋...
์ ๊ฐ ์ง๊ธ ๋ง ์์์ฐจ๋ฆฐ ํ ๊ฐ์ง ๋จ์ ์ ์ ๊ฐ ๋ ์ด์ Linux์์ Mono๋ก ์ฝ๊ฒ ํ
์คํธํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด NUnit ๋ฌธ์ ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก https://github.com/dotnet/cli/issues/3073 ์ ํํ์ด์ง๋ง NUnit์ ๋ํ ๊ฒ์
๋๋ค. ๋๋ ์ฌ์ ํ ๊ทธ๊ฒ์ด ๊ฒฐ๊ตญ ๊ณ ์น ์ ์๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค. ์ ์ ๋์ ๋๋ ์ฝ๊ฐ์ ๋ดํค์ง ์๊ณ Travis์์ ๋ด ๋ชจ๋
ธ ํ
์คํธ๋ฅผ ๋นํ์ฑํํ ๊ฒ์
๋๋ค. ( dotnet test
๋ ํ์คํ ๋ฏธ๋์
๋๋ค.)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ง ๋ณธ๊ฒฉ์ ์ธ ์ค๋น๊ฐ ๋์ง ์์์ง๋ง ์ฝ์๊ณผ Visual Studio์์ NUnit .NET Core ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์ํ๋ฅผ ์ป๊ธฐ ์ ์ ํด๊ฒฐํด์ผ ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์์ง๋ง, ์ด์ฌํ ์์ ์ด ์๋ฃ๋๊ณ ์ธ๋ถ ์ฌํญ์ ์ด๋ฅด๊ธฐ๊น์ง ์ฐ๋ฆฌ๋ ์ด์ ํจ์ฌ ๋ ๊ฐ๊น์์ก์ต๋๋ค.
๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์์ ํ ํ CI ๋น๋๋ก ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ์ฌ๋๋ค์ด ํ์ด์ด๋ฅผ ๋ฐ๋ก ์ฐจ๊ณ ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๋ฐ ๋์์ ์ค ์ ์๋ค๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ ์คํฌ๋ฆฐ์ท์ด ์์ต๋๋ค.