AutoFixture๋ ํ์ฌ ์๋ก์ด DNX ํ๋ซํผ์ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ง์์ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๊น?
์์ง, ์ ์ด๋. DNX๋ ๋ฌด์์ ๋๊น?
ํํ.. ์๋ก์ด ํฌ๋ก์ค ํ๋ซํผ asp.net ํ๋ ์์ํฌ์ ๋๋ค. https://github.com/aspnet/DNX
๋ฐํ์์ "net451" ๋์ "dnx451" ๋ฑ์ ๋๋ค.
์ด ๋งฅ๋ฝ์์ "์ง์"์ ๋ฌด์์ ์๋ฏธํฉ๋๊น? .NET 4 ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ข ์์ฑ์ด ์๋ ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ASP.NET 5๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋ง์์ด์ ๊ฐ์?
ASPNET 5๋ ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ง๊ธ dnx ํ๋ซํผ์์๋ง ASPNET 5๋ฅผ ์์ฑ ์ค์ด๋ฏ๋ก ๋ค๋ฅธ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ์ ๋๋ค. ์ฐ๋ฆฌ ์ฝ๋๋ ํ์ฌ "net451"์ฉ์ผ๋ก ์ปดํ์ผ๋์ง ์์์ผ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํธํ๋์ง ์๋ ํ๋ซํผ์ ํจ๊ณผ์ ์ผ๋ก ๋์์ผ๋ก ํฉ๋๋ค.
๋ด ํ ์คํธ๋ ์ด project.json์ผ๋ก ์ ์คํ๋ฉ๋๋ค.
{
"์ข
์์ฑ": {
"xunit.runner.dnx": "2.1.0-*",
"xunit":"2.1.0-*",
"AutoFixture.Xunit2":"3.30-*",
"NSubstitute": "1.8.0",
"ManagementWeb": "",
"Microsoft.AspNet.Mvc": "6.0.0-beta4",
"AutoFixture": "3.30.4-*",
"AutoFixture.AutoNSubstitute": "3.30.4-*",
"Microsoft.Azure.Documents.Client": "0.9.2-preview",
"WindowsAzure.Storage": "4.4.1-*",
"DeepEqual": "1.1-*"
},
"frameworks": {
"dnx451": { }
},
"commands": {
"test": "xunit.runner.dnx"
}
}
ํฅ๋ฏธ๋ก์ด. ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ ์ํด ์ด ์์
์ ํ๊ณ ์๋ ์ฌ๋์ ๋์ฒญํด์ผ ํฉ๋๋ค.
์์
์ ์ํํ๊ธฐ ์ํด ํน๋ณํ ์กฐ์น๋ฅผ ์ทจํ์ต๋๊น?
์๋์. IIRC Autofixture๋ ํญ์ aspnet 5์ ํจ๊ป ์๋ํ์ง๋ง ๊ณผ๊ฑฐ์๋ xUnit ํ์ฅ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด์ AF์ ๋ํ xUnit 2 ์ง์์ด ์ข ๋ฃ๋๊ณ DNX์ xUnit์ด ํจ๊ป ์ ์๋ํ๋ฏ๋ก ์๋ํฉ๋๋ค.
์ฌ๊ธฐ์ ์์ด๋์ด๋ DNX๊ฐ ์๋๋ผ ์ค์ ๋ก "CoreCLR์ ๋ํ ์ง์"์ธ ๊ฒ ๊ฐ์ต๋๋ค. .NET Framework 4.5์์ ์๋ํ๋ ๋ชจ๋ ๊ฒ์ DNX์ 4.5์์ ์๋ํฉ๋๋ค. CoreCLR์ ์ง์ํ๊ธฐ ์ํด ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ด ํ์ํ ๊ฒ ๊ฐ์ง๋ง ์ผ๋ง๋ ํ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์์๋ด๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ CoreCLR์ฉ์ผ๋ก ๋น๋ํ๊ณ ๋ฌด์์ด ์ค๋จ๋๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
์, ๋ถ๋ช ํํด์ผํ์ต๋๋ค. DNX๋ฟ๋ง ์๋๋ผ CoreCLR์ ์๋ฏธํ์ต๋๋ค.
coreclr repo ๋ง ๋ณด๋ฉด ํ๋ก์ ํธ ํํฉ์ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ธ๊ฐ์? ๋ฒ ํ? ์ถ์ ๋?
์ ํ ์๋ํ์ง ์๊ณ ์ง์๋๋ ๊ธฐ๋ฅ์ด ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๊ต์ฐจ์ ์ด๋ผ๋ ์ ์์ CoreCLR์ด Portable Class Libraries์ ๊ฐ์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณ๊ฒฝํ์ง ์๊ณ CoreCLR์์ ์คํ๋๋๋ก AutoFixture๋ฅผ ๊ฐ์กฐํ๋ ๊ฒ์ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ต๊ทผ์ @moodmosaic ์ AtomEventStore(AutoFixture๋ณด๋ค ํจ์ฌ ์์ ํ๋ก์ ํธ)์ ๋ํ ๋ถ์ ์ ํ ์ ๋๋ก ์น์ ํ๊ณ
AutoFixture ์์ค๋ฅผ ์ ํ ๋ณด์ง ์๊ณ ๊ทํ์ ํ๊ฐ์ ๋์ํฉ๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ์ ์์ต๋๋ค. #if DNX_*
- ์ง์์ด ๊ณํ์ ์๋ ๊ฒฝ์ฐ ์คํ์ผ ์ง์๋ฌธ์ด ํ์ํฉ๋๋ค.
CoreCLR์ Windows Phone 8 ์ดํ๋ก ์ด๋ ์ ๋ ์คํ๋๊ณ ์์ต๋๋ค.
ASP.NET 5๋ 11์์ RC๊ฐ ๋ ๊ฒ์ด๋ฉฐ Linux ๋ฐ Mac์ฉ CoreCLR๋ 2015๋ 11์์ RC๊ฐ ๋ ๊ฒ์ ๋๋ค. CoreFX์ ํจ๊ป. 2016๋ 1๋ถ๊ธฐ์ ๊ณํ๋ ๋ชจ๋ ๊ฒ์ ์ํ ๋ฆด๋ฆฌ์ค 1.0.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ์ง ์๊ณ CoreCLR์ ๋ํ ์ง์์ ์ถ๊ฐํ ์ ์๋ค๋ฉด ๋งค์ฐ ๋๋ ๊ฒ์ด๋ฏ๋ก ์ด ๋ฌธ์ ์ _4.0_ ์ด์ ํ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
ํธ๊ธฐ์ฌ์ Ploeh.AutoFixture
์ด์
๋ธ๋ฆฌ์์ API ์ด์์ฑ ๋ถ์๊ธฐ ๋ฅผ ์คํํ๊ณ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
์ดํ์ธ์ ์ด๊ธฐ ์ ์ ๊ธฐ๋ค๋ฆฌ์ญ์์ค. ๋ถํํ๋ ์ง์๋์ง ์๋ ๊ธฐํธ์ ๋๋ต 3%๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐํธ๋ฅผ ์ค๋ช ํฉ๋๋ค.
| ๋์ ์ ํ | ๋์ ํ์ |
| --- | --- |
| ์์คํ
.์ฝ์ | M:System.Console.get_Out |
| ์์คํ
.์ค๋ ๋ฉ.์ค๋ ๋ | M:System.Threading.Thread.get_ManagedThreadId |
| ์์คํ
.์ค๋ ๋ฉ.์ค๋ ๋ | M:System.Threading.Thread.get_CurrentThread |
| System.Reflection.ICustomAttributeProvider | M:System.Reflection.ICustomAttributeProvider.GetCustomAttributes(System.Type,System.Boolean) |
| System.Net.Mail.Mail์ฃผ์ | M:System.Net.Mail.MailAddress.#ctor(System.String) |
| System.Serializable์์ฑ | M:System.SerializableAttribute.#ctor |
| ์์คํ
.๋ฐํ์.์ง๋ ฌํ.์ง๋ ฌํ ์ ๋ณด | T:System.Runtime.Serialization.SerializationInfo |
| System.Reflection.ParameterInfo | M:System.Reflection.ParameterInfo.IsDefined(System.Type,System.Boolean) |
| ์์คํ
.์ ํ | M:System.Type.get_IsGenericTypeDefinition |
| ์์คํ
.์ ํ | M:System.Type.get_IsEnum |
| ์์คํ
.์ ํ | M:System.Type.get_BaseType |
| ์์คํ
.์ ํ | M:System.Type.get_IsPrimitive |
| ์์คํ
.์ ํ | M:System.Type.get_Assembly |
| ์์คํ
.์ ํ | M:System.Type.get_IsGenericType |
| ์์คํ
.์ ํ | M:System.Type.GetTypeCode(System.Type) |
| ์์คํ
.์ ํ | M:System.Type.get_IsClass |
| ์์คํ
.์ ํ | M:System.Type.get_IsValueType |
| ์์คํ
.์ ํ | M:System.Type.get_IsAbstract |
| System.Reflection.MemberInfo | M:System.Reflection.MemberInfo.get_ReflectedType |
| System.Reflection.PropertyInfo | M:System.Reflection.PropertyInfo.GetSetMethod |
| ์์คํ
์์ธ | M:System.Exception.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |
| System.Reflection.MethodBase | M:System.Reflection.MethodBase.GetCurrentMethod |
๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ์๋ฃจ์ ์ด ์์ต๋๋ค.
System.Type
์ ์์ฑ์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ GetTypeInfo(Type)
ํ์ฅ ๋ฉ์๋๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ System.TypeInfo
์ ํด๋น ์ฐธ์กฐ๋ก ๋ฐ๊ฟ๋๋ค.System.SerializableAttribute
๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.System.Runtime.Serialization.SerializationInfo
๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค(_์์ธ ์์ฑ์_์์๋ง ์ฌ์ฉ๋จ).System.Net.Mail.MailAddress
๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.System.Reflection.MemberInfo.ReflectedType
์์ฑ์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐ์ฌ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ ํ์ ์ ์งํฉ๋๋ค.System.Reflection.PropertyInfo.GetSetMethod
์์ฑ์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ๋์ System.Reflection.PropertyInfo.SetMethod
์์ฑ์ผ๋ก ๋ฐ๊ฟ๋๋ค.์ด๊ฒ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ผ ๋ฟ์ด๋ฉฐ CoreCLR์ด ์์ง ๊ฐ๋ฐ ์ค์ด๋ฏ๋ก ์ํฉ์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ ์ด๋ ์ฐ๋ฆฌ๋ AutoFixture๊ฐ ๊ทธ๊ฒ๊ณผ ํธํ๋๋๋ก ํ๊ธฐ ์ํด ๋ฌด์์ด ํ์ํ์ง์ ๋ํ ์ผ๋ฐ์ ์ธ ์์ด๋์ด๋ฅผ ์ป์์ต๋๋ค.
์์ฐ, ์ด ๋ถ์์ ์ํํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. @ecampidoglio :+1:
์ผ๋ถ ํธํ๋์ง ์๋ ์ ํ(์: MailAddress
)์ ์ ์ฒด ํ๋ ์์ํฌ์์๋ง ์๋ํ๋ ์ถ๊ฐ ๊ธฐ๋ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ํ ์ ์์ต๋๋ค. ๋๋ ์ด๋ฏธ ๋ฒ์ 4์ฉ _Ploeh.AutoFixture_ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ผ๋ถ ๊ธฐ๋ฅ ์
PropertyInfo.GetSetMethod
๋ฅผ PropertyInfo.SetMethod
๋ก ๋ฐ๊พธ๋ ์์ด๋์ด๋ ์ข์ต๋๋ค. AFAICT, .NET 4.5 ์ด์์์๋ง ์๋ํ์ง๋ง _v4_ ๋ถ๊ธฐ๊ฐ ์ด๋ฏธ .NET 4.5์ ์๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ์ต๋๋ค.
"Jump In" ๋ ์ด๋ธ์ด ์ด ๋ฌธ์ ์ ์ ํฉํ์ง ํ์คํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋นํ ์ฝ๊ณ ์๋ก์ด ๊ธฐ์ฌ์ ์นํ์ ์ธ ์๊ณ ๊ณ ๋ฆฝ ๋ ํ์ ํฌ๊ธฐ์ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ฌธ์ ๋ ์ฝ๋ ๊ธฐ๋ฐ๊ณผ ๊ทธ ์ญ์ฌ์ ์๋น ๋ถ๋ถ์ ์๋นํ ์ ์ดํดํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@chaitanyagurrapu , ์๋ง๋ ๋น์ ์ด ์ณ์ ๊ฒ์ ๋๋ค.
๋ด๊ฐ _jump in_ ๋ ์ด๋ธ์ ์ถ๊ฐํ ์ด์ ๋ ์ด ์์ ์ด AutoFixture ์ธ๋ถ ์ ๋ณด์ ๋ค์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์: ๋ค์ํ ๋นํธํ์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ์ง๋ง CorCLR๊ณผ ๊ด๋ จ๋ ์ ์ฒด ์ฝ๋/๋น๋ ์ธํ๋ผ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ง์ ์์ ์ด ํ์ํ๋ฉฐ ๊ทธ ๋ถ๋ถ์ AutoFixture์ ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค.
ํ์ฌ๋ก์๋ ์ด๋ฌํ ๊ธฐ์ ์ด ์์ผ๋ฏ๋ก ๋์์ ๋ฐ๊ณ ์ถ์ต๋๋ค. ํธํ์ฑ ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ๋ด๋ ค์ผ ํ ๊ฒฐ์ ์ ์ฌ๊ธฐ ๋๋ ์ ์ฉ Github ๋ฌธ์ ์์ ๋ ผ์ํ ์ ์์ต๋๋ค.
์ด ์์ ์ ์์ ํ์ต๋๋ค. ์์ผ๋ก ๋์ฌ ์ง๋ฌธ๋ค :)
๋์๊ฒ ์ข์ ์๋ฆฌ :+1:
@lbargaoanu ์ข์ ์๋ฆฌ:+1: ๊ฐ๋ฅ ํ๋ฉด ์๊ฒ ์ ์งํ์ญ์์ค .
.NET Core์ฉ AutoFixture๋ฅผ ๋น๋ํ ์ ์๋๋ก MailAddressGenerator๋ฅผ v4 ๋ถ๊ธฐ์ ์ ์ฒด ํ๋ ์์ํฌ๋ฅผ ๋์์ผ๋ก ํ๋ ๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ด๋ํ๊ณ ์ถ์ต๋๋ค. .NET Core์ ๋ํ ์๋ฆฌ ํ์์ ์ ํ์ ์ ์ธํ ์๋ ์์ง๋ง ์ง๊ธ๊น์ง๋ ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ํผํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํญ์ ์ ์ฒด ํ๋ ์์ํฌ์์๋ง ์ง์๋๋ ๊ฒ๋ค์ด ์์ ๊ฒ์ ๋๋ค.
์์ ์ค ์ ๋๋ค. ํ์ง๋ง ๊ทธ๋์...
ํฅํ ์ฐธ์กฐ๋ฅผ ์ํด
https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/
์ข์ ๊ฒ์๋ฌผ! ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌํจ๋๋์? (_library_๋ฅผ ๊ฒ์ํ์ง๋ง ๋ง์ด ์ฐพ์ง ๋ชปํ์ต๋๋ค...)
:) ์ด๊ฒ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ดํ ๊ฒ์ด์ง๋ง ์ด ๊ฒ์๋ฌผ๊ณผ ๋งํฌ๋ก ์ถฉ๋ถํด์ผ ํฉ๋๋ค.
AutoFixture๊ฐ CoreCLR์์๋ ์๋ํ๋ ๋ชจ์ต์ ๋ณด๊ณ ์ถ๊ณ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๊บผ์ด ๋์ธ ๊ฒ์ ๋๋ค. Lucian Bargaoanu(#511, #513)์ ๋ง์ง๋ง PR์ ๋ณด๋ฉด ์ด ๋ฌธ์ ๊ฐ ์ผ๋ถ ํด๊ฒฐ๋์ง ์์ ํ ๋ก ์์ ์ง๋ถํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋๋ ๊ณต์ ๊ตด๋ฆฌ๊ณ ์ถ์ง๋ง ์ด์ ๋ํ ์ ๋ฐ์ ์ธ ๊ณํ์ด ๋ฌด์์ธ์ง, ํ ๋ก ์ ๋ฐฉํดํ๋ ์ผ๋ถ ์ธ๋ถ ์ฌํญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ด์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ป๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
๋ด๊ฐ ์ฃผ์์ ๋ ๋ค๋๋ ๊ฒ์ ๋ณด์๊ฑฐ๋ ๋ ์์ ์ด ๊ฐ์ง๊ณ ์๋ ๋ช ๊ฐ์ง ์ง๋ฌธ :
@ploeh ์ด ๋ชจ๋ ์ง๋ฌธ์ ๋ตํ ์๋ ์์ง๋ง ํต์ฌ ๊ธฐ์ฌ์๊ฐ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. @lbargaoanu ์ด์ ๋ํ ์๊ฒฌ์ด ์์ผ์ ๊ฐ์? ๊ฐ์ฌ ํด์!
์ด ์ค๋ ๋์ ๋ต์ฅํ๋ ๊ฒ์ ์์์ต๋๋ค. ๋ด ์ฌ๊ณผ๋ฅผ ๋ฐ์์ฃผ์ธ์ :ํ๋ฌ์:
.NET Core์ฉ AutoFixture ์ฝ๋ ๊ธฐ๋ฐ์ ์ค๋นํ๊ธฐ ์ํด ํ ์ ์๋ ๋ชจ๋ ์์ ์ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ํ์ํค๊ฑฐ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ์ง ์๋ ํ ํ์ํฉ๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ์ ํ โโ๊ฐ๋ฅํ์ง๋ง _v4_ ๋ถ๊ธฐ๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
์ด์จ๋ , ์ ๋นํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด์๋ ์ ๋นํ ๊ทผ๊ฑฐ๊ฐ ํ์ํฉ๋๋ค. .NET Core ์ํฉ์ ๋ฉด๋ฐํ ๋ฐ๋ฅด๊ณ ์๋ค๊ณ ๋งํ ์๋ ์์ง๋ง ์ฌ์ ํ ๋ง์ ์ค๋์ฑ์ด ์๋ ๊ฒ ๊ฐ๊ณ ๋์์ด ๊ณ์ ์์ง์ด๋ ํ ์ถ์ธก์ ์ธ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ ํ๊ณ ์ถ์ง ์์ต๋๋ค.
์กฐ๊ฑด๋ถ ์ปดํ์ผ์ด ํ์ํ๊ฒ ๋๋๋ผ๋ ๋๋ผ์ง ์์ ๊ฒ์ด๋ฉฐ ์ ์ ์ ์ ์ ์งํ ์ ์๋ ํ ๋ฐ๋ํ์ง ์์ต๋๋ค. ๊ฒ์ํด์ผ ํ๋ ๋ชจ๋ ๊ฒ์ ๋น๋ํ๊ธฐ ์ํด ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ณ์ ์คํํ ์ ์๋ค๋ฉด ์๋ง ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์๋ค๋ ๊ฒ์ ์ธ์ ํด์ผ ํฉ๋๋ค.
๋๋ ๋ํ ์ด๋ค ํ๋ซํผ์ด ํ์ํ์ง ๋ชจ๋ฆ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ปค๋ฎค๋ํฐ์ ๋๊ตฐ๊ฐ๊ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ AutoFixture์ ๋ฒ์๋ฅผ ํ์ฅํ๋ pull ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฝ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
AFAICT, ์ฐ๋ฆฌ๋ netstandard1.X
๋ฅผ ๋ชฉํ๋ก ์ผ์์ผ ํฉ๋๋ค. ์ด๋ API๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํ๋ซํผ(Windows์ ๋ท์ฝ์ด ํฌ๋ก์ค ํ๋ซํผ ๋ฐ ๋ท ํ๋ ์์ํฌ ํฌํจ)์์ ์คํ๋๋ API ์ธํธ์
๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ซ์๊ฐ ๋์์๋ก API๋ ๋ ๋ง์ง๋ง ์ง์๋๋ ํ๋ซํผ์ ์ ์ต๋๋ค. netstandard1.X
์์ ์ด๋ค X๋ฅผ ๋ชฉํ๋ก ์ผ์์ผ ํ๋์ง ์ดํดํจ์ผ๋ก์จ ์ด ํ ๋ก ์ ์์(๊ณ์)ํด์ผ ํฉ๋๋ค.
๊ทธ ๋ฌธ์์ ์ฒซ ๋ฒ์งธ ๋จ๋ฝ์ ์ ๋ฅผ ์ฝ๊ฐ ๋๋ ต๊ฒ ํฉ๋๋ค.
.NET ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ถ์ ๋ฏธ๋์ ๋ํ ์ด๊ธฐ ๊ณํ์ ๊ณต์ ํ๊ณ ์์ต๋๋ค.
-- https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
@moodmosaic ์ ๋ ๋๋ ต์ง ๋ง, ์ฐ๋ฆฌ๊ฐ ๋ชฉํ๋ก ์ผ์ API๋ฅผ ์ ํํ๋ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ ๋ณธ์ง์ ์ผ๋ก ์ด๋ ์ชฝ์ด๋ ํ์์ ์ ๋๋ค. netstandard๋ ๋จ์ง ๊ทธ๋ค์๊ฒ ์ ์๋ ค์ง ์ด๋ฆ๊ณผ ํฉ์๋ ๋ถ๋ถ์งํฉ, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ ์ค๋ช ํ๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฒ์๋ถํฐ ํด๋ํ๊ธฐ๋ฅผ ์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด AutoFixture์ฉ ๋ฆฌํ๋ ์ API๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ฐ์ง ์ ์๋ ๋์ ๋ชฉ๋ก์ด ์ค์ด๋ญ๋๋ค. ๋์ ์์ง์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๊ทธ๋ฐ ํ๋ซํผ์ ์ด๋ฏธ ์กด์ฌํ๊ธฐ ๋๋ฌธ์(net framework full, Windows phone ๋ฑ), ์ด๋ค API๊ฐ ํ์ํ์ง ๋ ผ์ํ๋ค๊ณ ํด์ ๋ฐ๋ ์ ์๋ ๋ถ๋ถ์ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ํ๋ฅผ [๋ค์] ์์ํ ์๋ ์์ต๋๋ค... (๋ฉด์ฑ ์กฐํญ: ์ ๋ ์์ง ์ด ๋ด์ฉ์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค)
๊ฐ์ฅ ๋ง์ ์์ ํ๋ซํผ์ ์ด๋ฏธ ๊ตฌํ๋์ด ์๋ ๊ฐ์ฅ ๋ฎ์ ๊ฒ( netstandard1.0
)๋ถํฐ ์์ํ์ฌ ํด๋น ํ๋ซํผ์ ์ปค๋ฐํ ์ ์๋(๋๋ ํ์ง ์์) ์ด์ ๋ฅผ ์ฐพ์ต๋๋ค.
๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด netstandard1.0
API ์ธํธ๋ ๊ฝค ์ค๋๋๊ณ ์ ํ์ ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ด ์์ต๋๋ค.
netstandard1.1
๋ถํฐ ์์)netstandard1.3
๋ถํฐ ์์)netstandard1.1
๋ถํฐ ์์)netstandard1.1
๋ถํฐ ์์)netstandard1.3
๋ถํฐ ์์)์ด๊ฒ์ AutoFixture๊ฐ netstandard1.0
๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒ์ด ์ค์ฉ์ ์ด์ง ์๋ค๊ณ ์๊ฐํ๊ฒ ํฉ๋๋ค.
์ฌ๊ธฐ์ @ecampidoglio ๊ฐ ์ธ๊ธํ ๋ถ์๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ๋ ๋์ ์ ๋ต์ธ์ง ๊ถ๊ธํฉ๋๋ค.
ํธ์ง: ์ฌ๊ธฐ์ .NET API ์ด์์ฑ ๋ถ์๊ธฐ ๋๊ตฌ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ฌ๊ธฐ์ ์น ์ฌ์ดํธ http://dotnetstatus.azurewebsites.net์ด ์์ต๋๋ค.
๋๊ธ ์คํธ์ด ๋๋ฌด ๋ง์ ์ฃ์กํฉ๋๋ค. ์ด์ ๊ทธ๋งํ ๊ฒ์ :)
์ฐธ๊ณ ๋ก ์ ๋ v4 4a7d415์์ ๋ก์ปฌ๋ก ๋น๋๋ Ploeh.AutoFixture.dll์์ ์ต์ ์ด์์ฑ ๋ถ์๊ธฐ๋ฅผ ์คํํ์ผ๋ฉฐ ์์ฝ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์งํ | .NET ์ฝ์ด, ๋ฒ์ =v5.0 | .NET ํ๋ ์์ํฌ, ๋ฒ์ =v4.6.2 | .NET ํ๋ซํผ, ๋ฒ์ =v5.0 |
---|---|---|---|
Ploeh.AutoFixture, ๋ฒ์ =3.45.2.0, ๋ฌธํ=์ค๋ฆฝ, PublicKeyToken=null (.NETFramework, ๋ฒ์ =v4.5) | 98.56% | 100.00% | 98.37% |
ํ์ฌ ๊ถ์ฅํ๋ ๋ช ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ฒด ์ถ๋ ฅ์ ์ฌ๊ธฐ์ ์์ต๋๋ค .
@ploeh ๋๋ฆฌ ์ฌ์ฉ๋๋ Asp.Net Core ๊ตฌ์ฑ ์์์๋ ์ต์ netstandard1.3
ํฉ๋๋ค. ์๋ฅผ ๋ค์ด EntityFrameworkCore(1.3 ์ฌ์ฉ) ๋ฐ Mvc(1.6 ์ฌ์ฉ)๊ฐ ์์ต๋๋ค.
Autofixture๊ฐ ์ด ์ค ํ๋๋ฅผ ๊ธฐ์ค์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ์ข์ ์์น์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
.Net Core ์ง์์ ์ฌ์ฉํ ์ ์๋ ์ผ์ ์ด ์์ต๋๊น?
v4 ๋ธ๋์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก .NET Core์์ ๋น๋๋ฅผ ๋ง๋ค ์ ์์์ต๋๋ค. ํ์ง๋ง ํ ์คํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์ง๋ ์์์ต๋๋ค. ํจํค์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ด ๋ธ๋์น๋ฅผ ํ์ธํ์ธ์.
FWIW, ๋ค์ ์ AutoFixture/AutoFixture v4์ uhaciogullari/AutoFixture net-core ๊ฐ์ ๋น๊ต ์ ๋๋ค. ์ ๋ณด๊ณ ๊ฐ๋๋ค ๐
๊ธ์, ๊ทธ๊ฒ์ ์ ๋ง ๊ฐ๋จํ์ง ์์ต๋๋ค. project.json์ด ์กด์ฌํ๋ฉด ํ์ฌ ์ผ๋ฐ csproj ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ๋ฅผ project.json ํ์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ง๋ง ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ ํฉํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์์ธํ ํ์ธํ์ง๋ ์์์ง๋ง ๋ค๋ฅธ ํ ์คํธ ํ๋ ์์ํฌ์ฉ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์์ฌ๋ฉ๋๋ค. .NET Core๋ ์ง์ํ๋์ง ์ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ฌ์ค์ Microsoft ๊ฐ ๊ฒ์ด๋ผ๊ณ ๋ฐํ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ์ฌ์ด ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฝ์ํ์ง๋ง ์ด ์์ ํ์์ ์ฌ์ฉํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ์๊ฒ ์ต๋๊น? ๊ทธ๊ฒ์ ๋ชจ๋ ๋น์ ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค. ํ์ฌ ๋ธ๋์น์์ ํจํค์ง๋ฅผ ํธ์ํ ์ ์์ง๋ง v4๊ฐ ์งํ ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ค๋ฅ ์์ด ๋น๋ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. #712
์ค์ ๋ก ์ง์ ์์ ๋น๋๋ฅผ ์๋ํ์ง๋ง dll์ ์์ฑํ์ง ์์ต๋๋ค. ์ผ๋ถ ๊ตฌ์ฑ์ด ๋๋ฝ๋์์ ์ ์์ง๋ง ๊ฐ ํ๋ก์ ํธ์ ์ถ๊ฐ ํด๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ฏธํ์ ์ผ๋ก ์ ์๊ฒ ๋งค๋ ฅ์ ์ด์ง ์์์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
.net ํต์ฌ ๋๊ตฌ๊ฐ RTM ์ํ์ ๋๋ฌํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ํ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ฐ์ดํธ๋ csproj ๋๊ตฌ๋ VS2015๋ก ์ด์๋์ง ์์ผ๋ฏ๋ก VS2017์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. https://twitter.com/TheCodeJunkie/status/822048014172880900 ์ฐธ์กฐ
@hoetz ๋น์ ์ ์ฌ์ ํ โโvs2017 ์ปค๋ฎค๋ํฐ ์๋์ ์ ์ค์นํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ฒํ ํ ๊ณํ์ด ์์ต๋๊น?
AitoFixture ์์ด .NET ํ์ค ์ด์ ๋ธ๋ฆฌ์ ๋ํ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ ๋ง ๋์ ์ผ์ ๋๋ค...
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ด๋ฅผ ์ํด์๋ ์ปค๋ฎค๋ํฐ์์ ๋๊ตฐ๊ฐ๊ฐ ์ฐธ์ฌํ๊ณ ๊ธฐ์ฌํด์ผ ํฉ๋๋ค. ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ ๋ฌธ์ ๊ฐ ์์ง ํด๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ง๊ธ ๋น์ฅ์ ๋ถ๋ช ํ ์ด๋ ต์ต๋๋ค(#703). ๋๊ตฐ๊ฐ๋ ์์ฅ์์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ๋๊ณ ์์ต๋๋ค. ์ง๊ธ์ Src\AutoFixture.sln์๋ง ์ง์คํ๊ณ ์์ต๋๋ค.
๋ด ์ ๋ต์ .NET Framework์ .NET Standard๋ฅผ ๋ชจ๋ ์ง์ํ ์ ์๋๋ก Src\AutoFixture\AutoFixture.csproj๋ฅผ ์ ํ๋ก์ ํธ ํ์(VS 2017)์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋๋ค.
.NET ์ด์์ฑ ํ ์คํธ๋ฅผ ์คํํ์ผ๋ฉฐ ์ต์์ ๋์์ .NET Standard 1.5์ฌ์ผ ํฉ๋๋ค(์ฒจ๋ถ ํ์ผ ์ฐธ์กฐ).
์ฐ์ ํ ์คํธ ํ๋ก์ ํธ๋ฅผ ๋ณํํ์ง ์๊ฒ ์ง๋ง ํฅํ .NET Core ๋ฐํ์์์๋ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์๋
ํ์ธ์ @Kralizek - ์ฐธ๊ณ ๋ก ์ ๋ #712์์ netstandard1.3
์ฑ๊ณตํ์ต๋๋ค.
@Kralizek ๋ด ์ค์, netstandard1.3
๊ณํ์ ์์ํ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก๋ netstandard1.5
๋๋ฌ์ต๋๋ค ๐
๊ฑฐ์ ๋ค ์์ด. ํ ์คํธ๋ .NET Framework์์ ๋ชจ๋ ๋ น์์ ๋๋ค. ๋น๋๋ .NET Standard์์ ๋ชจ๋ ๋นจ๊ฐ์์ ๋๋ค. :๋
๋ค์ ๋ฒ์ฃผ์ ๋ฌธ์ ๋ง ๋ง๋ฌ์ต๋๋ค.
๋ฐ์ ๊ธฐ๊ฐ ํ์ํ์ง ์์
System.Net.Mail.MailAddress
๋ .NET Standard์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ MailAddressGenerator
ํ ๊ฐ์ง ๊ฒฝ์ฐ๋ง ์์ต๋๋ค. ์๋ฃจ์
: ์ ์ฒด ํ์ผ์ด #if NET40 ... #endif์ ์ํด "์ ๊ฑฐ"๋์์ต๋๋ค.
์ง๋ ฌํ
SerializableAttribute, SerializationInfo ๋ฐ StreamingContext๋ .NET Standard์ ์กด์ฌํ์ง ์์ต๋๋ค. ๋ํ Exception์๋ ์ด ๋ ๊ฐ์ง ์ ํ์ ์ฌ์ฉํ๋ ์์ฑ์๊ฐ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์์ธ์์ ์์ฑ๊ณผ ํด๋น ์์ฑ์๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. ํนํ ์์ฑ์ ์ ๊ฑฐํ๋ ๊ฒ์ ์ ๋ง ์๋ฆ๋ต์ง ์์ต๋๋ค.
์ ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํ ๋ฆฌํ๋ ์
์ฌ์ฉ
.NET Standard์์๋ Type
๊ฐ ํจ์ฌ ๋์ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์์ฑ์ ํฌํจํ๋ TypeInfo ๊ฐ์ฒด์ ์์๋ฉ๋๋ค. ๋ฌธ์ ๋ .NET Framework๊ฐ ์ฌ์ ํ ์ด์ Type ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์
๋๋ค.
ํด๊ฒฐ์ฑ
:
๋์ผํ Type ๊ฐ์ฒด public static Type GetTypeInfo(this Type type) => type;
๋ฅผ ์ ๋ฌํ๋ ํ์ฅ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ ์ด ํ์ฅ ๋ฉ์๋๋ฅผ ์ปดํ์ผ๋ฌ ์ง์๋ฌธ์ ํตํด .NET Framework์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ํ์ต๋๋ค. ์ด ํธ๋ฆญ์ ํ์ผ์ ๊ทธ๋๋ก ๋ ์ฑ๋ก ๋ง์ ๋นํธํ์ฑ์ ํด๊ฒฐํ์ต๋๋ค. ์ฐธ๊ณ : ํ์ฅ ๋ฉ์๋๋ internal
๋ก ํ์๋ฉ๋๋ค.
๋ฆฌํ๋ ์
์ ์ฌ์ฉํ์ฌ ํ์ฌ ์ด์
๋ธ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ
์ข์, ์ด๊ฒ์ ํ๋ก์ ํธ ๋ ์ด์์์ ์๋ฒฝํ๊ฒ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ด๋ ค์ด ๊ฒ์ด์์ต๋๋ค. ReSharper๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธํ์ง๋ง ๋ค์ ํ์ธํด์ผ ํฉ๋๋ค.
ํ์ผ์ TerminatingWithPathSpecimenBuilder
์ด๊ณ ํ์ var thisAssembly = MethodBase.GetCurrentMethod().DeclaringType.Assembly;
์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ ์ด์
๋ธ๋ฆฌ๋ฅผ ์ฐพ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ํด๋์ค์๋ ์์์๊ฐ ์์ผ๋ฏ๋ก typeof(TerminatingWithPathSpecimenBuilder).DeclaringType[.GetTypeInfo()].Assembly
๊ฐ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ์์ ํ์ง๋ง ๋ค์ ๋งํ์ง๋ง ์ ๊ฐ ํ๋ฆด ์๋ ์์ต๋๋ค. (์ ๋ ๊ฐ์ง ํ์ฅ ๋ฐฉ๋ฒ์ ๊ดํธ ์์ ๋ฃ์์ต๋๋ค). ๋ด ๊ฐ์ ์ด ๋ง๋ค๋ฉด ์ด ํด๋์ค๋ฅผ sealed
ํ์ฌ ์์๋์ด ์์๋ ์ํ์ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด์จ๋ ์๋ก์ด ํ๋ก์ ํธ ํ์ผ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net40;netstandard1.5</TargetFrameworks>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.ComponentModel.DataAnnotations" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.5' ">
<PackageReference Include="System.ComponentModel.Annotations" Version="4.1.0" />
</ItemGroup>
</Project>
์, ์ด๊ฒ์ ์ ์ฒด ํ๋ก์ ํธ ํ์ผ์ ๋๋ค.
@Kralizek ๋น์ ์ ์ฐ๋ฆฌ๊ฐ v4
๋ธ๋์น ์์ >= net45
๋ฅผ ๋ชฉํ๋ก ์ผ์ผ๋ ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๊น?
@adamchester nope... ๋ณ๋ก ์ค์ํ์ง ์์ง๋ง ๋์ ํ๋ ์์ํฌ๋ฅผ ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ๐
Btw, System.Threading.Thread
ํจํค์ง ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
๊ทธ๊ฒ์ ์์ ํ ์๋ก์ด ์์ค์ ์ปดํ์ผ๋ฌ ์ค๋ฅ๋ฅผ ์ ๊ธ ํด์ ํ์ต๋๋ค... ๋ฉ์ง๋ค์ :P
.NET Standard 2.0 ๋ง์ API๋ฅผ ๋ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ธฐ๋ค๋ฆด๋งํ ๊ฐ์น๊ฐ ์์ต๋๊น?
์๋, ๊ทธ๋ ์ง ์๋ค. .NET Standard 2.0์ 2017๋ 3๋ถ๊ธฐ์ ์ถ์๋ ์์ ์ ๋๋ค. .NET Standard 1.5 ์ง์์ด ํ ๋ฒ ๋จ์์ต๋๋ค. ์ 2.0์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๊น? ๋ฐํ์์ ๋ฉ์ผ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ง์ํ์ง ์์ต๋๊น?
๋ํ 2.0์ ๋๋ถ๋ถ ํ๋ ์์ํฌ 4.6์ shim์ด ๋ ๊ฒ์ด๋ฉฐ NotSupportedException์ด ๋ง์ด ๋ฐ์ํฉ๋๋ค.
@Kralizek ์ถฉ๋ถํ ๊ณต์ ํฉ๋๋ค. ๋ฌผ๋ก ๋ ๋นจ๋ฆฌ ๋ฆด๋ฆฌ์ค๋ autofixter๋ฅผ ์ข์ํ ๊ฒ์ด๋ฏ๋ก ๋ ์ผ๋ฐ์ ์ธ ์ง๋ฌธ์ด์์ต๋๋ค.
FWIW, ์ ๋ ๋ฉ์ผ ์ฃผ์ ์์ฑ๊ธฐ์ ๋ํ ์ง์์ ์ถ๊ฐํ ๊ณตํ์์ ๋๋ค. AutoFixture๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฅผ ์ง์ํ๋๋ก ๋ง๋ ๊ฒ์ ์ข์ง๋ง AutoFixture์ ์ค์ํ ์ธก๋ฉด์ ์๋๋ฉฐ ๋ ธ๋ ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ข ๊ธฐ๋ค๋ ค.
๊ฐ๋ฅํ ๊ฐ์ฅ ๋ฎ์ .NET Standard์์ AutoFixture๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ IMHO์ฌ์ผ ํฉ๋๋ค. ๊ณ์ํด์ ์ข์ ์ผ์ ํ์ธ์. ๋์์ด ํ์ํ๊ฑฐ๋ ํ ์คํธ์ ๋ํ ์ง์์ด ํ์ํ๋ฉด ์ ๊ฐ ํ์คํ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
@Kralizek TypeInfo ํญ๋ชฉ๋ .NET 4.5์ ์์ผ๋ฏ๋ก ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ค๋ ์ฌ๋ฌ .NET Core ํ๋ก์ ํธ์ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์์ํ ๋ "Package AutoFixture 3.50.5 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1)" ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด ๋งค์ฐ ์ ์ฉํ nuget ํจํค์ง๋ฅผ ์ด ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์๋ ์๊ธฐ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ๋ ".net core์ autofixture ์ํ" ์ข ๋ฅ์ ์๋ต์ ์์ฒญํ๊ณ ์์ต๋๋ค(.net core 2.0์ ์ด๋ฏธ rtm์ด๊ณ ๋ฆด๋ฆฌ์ค ๋ณด๋ฅ ์ค์ ๋๋ค.) .
๋ฌด์์ด ๊ทธ๊ฒ์ ๋ง๊ณ ์์ต๋๊น? (๋ฏธ๋ฆฌ ๊ฐ์ฌํฉ๋๋ค)
ํ์ฌ ์์
์ค์ด๋ฉฐ #773์์ ์งํ ์ํฉ์ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด PR์ AutoFixture
ํ๋ก์ ํธ ์์ฒด์ ๊ดํ ๊ฒ์
๋๋ค. ๋ง์ด๊ทธ๋ ์ด์
ํด์ผ ํ ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ 9๊ฐ ๋ ์์ง๋ง ์ด ํ๋ก์ ํธ์ ๋ํ ์์
์ ๋ง์น ํ์๋ง ์ํํด์ผ ํฉ๋๋ค.
.NET Core ์ง์์ v4๋ก ์ถ์๋ ์์ ์ด๋ฉฐ ์ฌ๊ธฐ ์์ ์ ์ฒด ๋ฒ์๋ฅผ ์ฐพ์ ์
๊ทธ ๋์ Dev NuGet ํผ๋(#762)๋ ์์ ์ค์ด๋ฏ๋ก ์ด๊ธฐ ์ ํ ํ ์คํธ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค ๐
@zvirja ์์ธํ ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ๋ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ด๊ธฐ ์ ํ ํ ์คํธ์ ์ฐธ์ฌํ๊ณ ์ถ์ต๋๋ค.
@zvirja ๊ทธ๋์ ๋ช
ํํ ํ๊ธฐ ์ํด - .NET Core ์ ํ๋ฆฌ์ผ์ด์
/๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ๋ ํ์ฌ(์์) ์ ๊ทผ ๋ฐฉ์์ AutoFixture
๋ฅผ .NET 4.7
ํ
์คํธ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ํ
์คํธ ํ๋ก์ ํธ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฒ์
๋๋ค. ๋์ค์ .NET Core๋ก?
์ด๊ฒ์ด ๋น๋ถ๊ฐ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๊น? (๋ด๊ฐ ์์ฑํ๋ ์ฑ์ด ์์ ํ .NET Core๊ฐ ๋๋๋ก ํ์ฉ๋๋ ํ, ์ค์ ๋ก ์ผ๋ฐ .NET 4.7
ํ๊ฒฝ์์ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.)
@andersborum ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํ ์ ์ด ์์ต๋๋ค. v3์์ ์ฌ์ฉํ๋ ๋ชจ๋ API(NuGet์ ๊ฒ์๋ ํจํค์ง)๊ฐ .Net Standard 2.0๊ณผ ํธํ๋๋์ง ํ์ ํ ์ ์์ต๋๋ค(.NET Standard์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด).
v3์ .Net Core๋ฅผ ๋ชจ๋ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค. ๊ทธ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์กฐ์ธํ ์ ์์ต๋๋ค ๐
๋ชจ๋์๊ฒ ์๋ฆฌ๊ธฐ ์ํด - AutoFixture PR(#773)์ ๋ํ .Net Standard ์ง์์ด v4
๋ถ๊ธฐ์ ๋ณํฉ๋์์ต๋๋ค. ๋น์ ์ ์ฐ๋ฆฌ์ ๊ฐ์ธ ํผ๋ ์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
AutoFixture ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๋ง์ด๊ทธ๋ ์ด์ ๋์์ต๋๋ค. ๋ค๋ฅธ ๊ธ๋ฃจ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ค์ ํ์ ์กฐ์น๋ฅผ ์ทจํ ๊ฒ์ ๋๋ค.
์ํ ๋ฒ์ ์ด๋ผ๋ v4๋ฅผ nuget.org๋ก ์ด๋ํ ์ ์์ต๋๊น? ์ง๊ธ๊น์ง .netstandard๋ฅผ ์ง์ํ๋ autofixture์ ๋น์ทํ ๊ฒ์ ์ฐพ์ ์ ์์์ต๋๋ค.
v4์ ์ถ์์ผ์ ์ด๋ฏธ ๊ฒฐ์ ๋์๋์?
@RomanKernSW ์ง๊ธ์ ์๋๋๋ค. ์์ง ํ๋ก์ ํธ์ ์ ๋ฐ๋ ๋ง์ด๊ทธ๋ ์ด์
ํ์ง ์์์ผ๋ฏ๋ก(์: xUnit, NUnit, NSubstitute ์ง์) ๋๋ฌด ์ด๋ฆ
๋๋ค. ๋ํ ์ฐ๋ฆฌ๋ ๋ค์์คํ์ด์ค ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๋ฆด๋ฆฌ์ค ์ฌ์ด์ ์ฃผ์ ์ค๋จ์ด ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ฉด์ master
๋ฅผ v4
์ง์์ ์ผ๋ก ๋ณํฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ํ ๋์ค์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค. ๋ณ๊ฒฝ ํ์ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ์ง์ฅ์ด ๋ ๊ฒ์
๋๋ค.
๋น๊ณต๊ฐ ํผ๋์ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ๊ผญ ํ์ํ ๊ฒฝ์ฐ NuGet.config
๋ฅผ ํตํด ํผ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
ํ nuget ๋ณต์(.Net Core 2 - VSO์์ ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ)์ nuget.config๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ํ์ฌ nuget.config ํ์ผ์ด ์๋ nuget.org๊ฐ ํฌํจ๋ ๋น๊ณต๊ฐ ํผ๋(VSO)๊ฐ ํ๋ ์์ต๋๋ค. ํ ์คํธํ ์๊ฐ์ด ํ์ํฉ๋๋ค...
.Net Standard 2.0์๋ .Net Framework NuGet์ ๋ํ ํธํ์ฑ ๋ชจ๋๊ฐ ์์ต๋๋ค.
AutoFixture 3.50.x๋ฅผ ์ฌ์ฉํ์ฌ .Net Core ํ
์คํธ๋ฅผ ์์ฑํ์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ฉ๋ฆฌ.
@roarwrecker ๊ต์ฅํฉ๋๋ค, ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! NuGet์ ๋ํ ๊ณต์ ์ง์์ ์ถ์ํ ๋๊น์ง ๋ ํฐ ์๊ฐ ๋ฒํผ๊ฐ ์์์ ์๋ฏธํฉ๋๋ค.wink:
@roarwrecker ๊ฐ์ฌํฉ๋๋ค... ์ด๊ฒ์ .netstandard 1.6์ ๋ฌธ์ ๊ฐ ์๋์์ต๋๋ค. ๋๊ฒ์ ์ค์นํ ์ ์์ง๋ง ์ค๋ฅ ์์ด ์ปดํ์ผ๋์ง ์์ต๋๋ค.
์ฌ๋ฌ๋ถ, .NetCore ์์ ์ด ์ผ๋ง๋ ์งํ๋์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง NuGet์์ ์ํ ๋ฒ์ ์ ์ป์ ์ ์์ต๋๊น?
@selmendorfFrontline ์ฌ๊ธฐ ์์ ๋ต์ฅ ๋ณต์ฌ:
์ํํ ๋ฒ์ ์ NuGet์ ๊ฒ์ํ๋ ๊ฒ์ ๋์๊ฒ ์ฝ๊ฐ ๊ณ ํต์ค๋ฌ์ด ์ง๋ฌธ์ ๋๋ค. ๋๋ถ๋ถ์ ํ๋ก์ ํธ์ ๋ํด .NET Core๋ฅผ ์ง์ํ๊ธฐ ์์ํ์ง๋ง ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค ๋ฅผ ์์ต๋๋ค . ์ด๊ฒ์ ์ฐ๋ฆฌ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ๋ ๋ณ๊ฒฝ์ด ๋ ๊ฒ์ด๋ฉฐ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์ฝ๋๋ ์ปดํ์ผ์ ๋ฉ์ถ ๊ฒ์ ๋๋ค. ํผ๋์ด ๋ํ๋๋ ์ง์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ธฐ์กด ๋ค์์คํ์ด์ค๊ฐ ์๋
alpha
๋ฅผ ๋ฆด๋ฆฌ์คํ๊ณalpha
์ RTM ์ฌ์ด์์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ์กด ๋ค์์คํ์ด์ค๊ฐ ์๋ v4๋ฅผ ์ด๋ฏธ ๋ณด์๊ธฐ ๋๋ฌธ์ ํผ๋์ ์ค ๊ฒ์ ๋๋ค. ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ์ด ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ v4๊ฐ ํญ์ ์๋ก์ด ๋ค์์คํ์ด์ค๋ก ์ถ์๋์์์ ๊ณ ๊ฐ์ด ๋๋ผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.- ๋ค์์คํ์ด์ค๊ฐ ๋ณ๊ฒฝ๋
alpha
๋ฅผ ๋ฆด๋ฆฌ์คํ๋ฉด ๋ ์ด์ ๊ณ ํต ์์ดmaster
๋ฅผv4
๋ถ๊ธฐ์ ๋ณํฉํ ์ ์์ต๋๋ค. ํ์ฌ ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ๋ชจ๋์ ์ปค๋ฐํ๊ณ ์์ผ๋ฏ๋ก ๋ค์์คํ์ด์ค ๋ณ๊ฒฝ์ ๋๊น์ง ๋ฏธ๋ฃจ๊ณ ์ถ์ต๋๋ค. ๋ ๋ค๋ฅธ ์์ ์ ์ฐ๋ฆฌ ๋ฌธ์๊ฐ ํ์ฌ ์ค๋น๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค์ด ์ ๋ชจ๋ ๋ค์์คํ์ด์ค ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์ ํจํ์ง ์๊ณ ๋จ์ํ ํ ์คํธ ๋ฐ๊พธ๊ธฐ๋ฅผ ์คํํด์ผ ํ๋์ง ์ดํดํ์ง ๋ชปํ ์๋ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ๋ค์ ๋ฌด์ญ๊ฒ ๋ง๋ค๊ณ ๊ฒฝํ์ด ๋ด๊ฐ ์ํ๋ ๋งํผ ์์กฐ๋กญ์ง ์์ ๊ฒ์ ๋๋ค.์ด ์ํฉ์ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์
alpha
๋ฅผ ์ถ์ํ์ง ์๊ณ RTM๋ง ์ถ์ํ๋ ๊ฒ์ ๋๋ค. ๋ถํํ๋ ์ ํํ ETA๋ ์ ๋ฅ๋ ฅ(์ ๋ ์ฌ๊ฐ ์๊ฐ์ ์ด ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ ๋๋ค)๊ณผ ๋ค๋ฅธ ๊ธฐ์ฌ์์ ๊ฐ์ฉ์ฑ(๋ด PR์ ๊ฒํ ํด์ผ ํฉ๋๋ค ๐)์ ๋ฐ๋ผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๋ถ์๊ฒ ์ ํํ ETA๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ด ๋จธ๋ฆฌ๋ก๋ ํ ๋ ๋ฌ ์์ ์ถ์๋ ๊ฒ์ด๋ผ๊ณ ์์ํ๊ณ ์ด ๋ฒ์ ๋ด์์ ์ผ์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ํ๋ก์ ํธ๋ ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ฝ 9๊ฐ์ ๋์ ์ค๋จ๋์์ต๋๋ค. ์ด๊ฒ์ด ์ง์์ด ์ง์ฐ๋๋ ์ฃผ๋ ์ด์ ์ ๋๋ค.
๊ทธ๋์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํผ๋์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ์ธ์. ์์์ ์ธ๊ธํ ๋๋ก Nuget.config
๋ฅผ ์กฐ์ ํ ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ด์ผ ํฉ๋๋ค.
#857์ด ์ต์ข ์ ์ผ๋ก ๋ณํฉ๋ ํ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ์ต์ข .NET ํธํ์ฑ ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์ ํ | .NET ํ๋ ์์ํฌ | .NET ํ์ค |
| ------------------ | ------------------------ | ------------------------ |
| ์๋ ๊ณ ์ ์ฅ์น | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
| AutoFixture.xUnit | :heavy_check_mark: 4.5.2 | :heavy_minus_sign: |
| AutoFixture.xUnit2 | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
| AutoFixture.NUnit2 | :heavy_check_mark: 4.5.2 | :heavy_minus_sign: |
| AutoFixture.NUnit3 | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
| AutoFakeItEasy | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.6 |
| ์คํ ํฌํฌ | :heavy_check_mark: 4.5.2 | :heavy_minus_sign: |
| ์คํ ๋ชจํฌ | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
| ์๋ ๋์ฒด | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
| AutoRhinoMock | :heavy_check_mark: 4.5.2 | :heavy_minus_sign: |
| ๊ด์ฉ๊ตฌ | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 2.0 |
| Idioms.FsCheck | :heavy_check_mark: 4.5.2 | :heavy_minus_sign: |
| ์๋ฏธ ๋น๊ต | :heavy_check_mark: 4.5.2 | :heavy_check_mark: 1.5 |
Idioms.FsCheck
์ ์ธํ ๋ชจ๋ ์ง์๋์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํด๋น ์ข
์์ฑ์ด .Net Standard๋ฅผ ์ง์ํ์ง ์๊ณ ์
๋ฐ์ดํธ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ผ๋ฏ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค(๋๋ถ๋ถ ์ฌ์ฉ๋์ง ์์). .NET 452
๋ฐ .NET Standard 2.0
(๊ธฐ์ ์ ์ผ๋ก ๊ฐ๋ฅํจ)๋ฅผ ๋ชจ๋ ์ง์ํ๊ธฐ ์ํด Idioms.FsCheck
ํฌํธ๋ฅผ ์๋ํ์ง๋ง ์๋ํ์ง ๋ชปํ์ต๋๋ค. F# SDK๋ ์ฌ์ ํ ๋งค์ฐ ๊ฑฐ์น ๊ณ ์ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. TargetFrameworks
๋
ธ๋๋ฅผ ์ ์ํ ํ ์ปดํ์ผ ๋ฐ ํ๋ก์ ํธ ๋ก๋๊ฐ ์คํจํฉ๋๋ค.
๋ค๋ฅธ ๋น์ ์ด ์๋ ํ ์ ๋ ์ด ๊ณํ์ ๋ฐ๋ฅผ ๊ฒ์ ๋๋ค ๐์ ๋ ์ถ์๊ฐ ์ผ๋ง ๋จ์ง ์์๋์ง, ์ผ๋ง๋ ๋ค์ณ์ ธ ์๋์ง ๋๋ผ๊ณ ์์ต๋๋ค ๐
๊ฐ ๊ฐ ๊ฐ!
.NET 452
๋ฐ.NET Standard 2.0
๋ชจ๋ ์ง์ํ๊ธฐ ์ํดIdioms.FsCheck
ํฌํธ๋ฅผ ์๋ํ์ต๋๋ค.
ํด๋น ๋ฒ์ ์์ ์ต์ F# ๋ฒ์ ์ผ๋ก ์ ํํด ๋ณด์ จ์ต๋๊น? IIRC, F# 3.1์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ฌ์ค์ผ ์ ์์ต๋๋ค.
๋ฉ์ง ์ํ @zvirja. ์ฐ๋ฆฌ๊ฐ v4๋ฅผ ์ป์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๊น? ๊ฐ๊น์ธ์๋ก ์ค๋ ๋ ๊ธฐ๋ถ :)
๋งฅ์ฃผ ํ ์ ๋๋ฆฌ๊ณ ์ถ์ด์ :)
ํด๋น ๋ฒ์ ์์ ์ต์ F# ๋ฒ์ ์ผ๋ก ์ ํํด ๋ณด์ จ์ต๋๊น? IIRC, F# 3.1์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ฌ์ค์ผ ์ ์์ต๋๋ค.
@moodmosaic ๋ค. FsCheck 2.9.0 ์ ํ์ธํ๋ฉด FSharp.Core (>= 4.1.17)
์ ์์กดํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ด๋ฏ๋ก ๋ค๋ฅธ ์ ํ์ด ์์์ต๋๋ค ๐
๋ฌธ์ ๋ SDK์ ์์ต๋๋ค. ๋ ํ๋ ์์ํฌ๋ฅผ ๋์์ ๋์์ผ๋ก ์ง์ ํ๊ธฐ ์์ํ๋ฉด VS์์ ์๋ฃจ์
์ ๋ก๋ํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ:
<PropertyGroup>
<TargetFrameworks>net452;netstandard2.0</TargetFrameworks>
.....
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FsCheck" Version="[0.9.2,3.0.0)" Condition=" '$(TargetFramework)'=='net452' " />
<PackageReference Include="FSharp.Core" Version="3.1.2" Condition=" '$(TargetFramework)'=='net452' " />
<PackageReference Include="FsCheck" Version="[2.9.0,3.0.0)" Condition=" '$(TargetFramework)'=='netstandard2.0' " />
<PackageReference Include="FSharp.Core" Version="4.1.17" Condition=" '$(TargetFramework)'=='netstandard2.0' " />
<PackageReference Include="FSharp.NET.Sdk" Version="1.0.*" PrivateAssets="All" />
</ItemGroup>
VS์์ ์ด๋ ค๊ณ ์๋:
๋ชจ๋ ๊ฒ์ด ํ๋ก์ ํธ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌธ์ ๋ F# SDK์ ์ด๋๊ฐ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ FsCheck์ .NET Core ์ง์์ ๋ ๋์ ์๊ธฐ๊น์ง ์ฐ๊ธฐํ๊ณ ์ถ์ต๋๋ค.
@Kralizek ์์ ๋ช ๊ฐ์ง ๋ต๋ณ์ ์ฐธ์กฐํ์ญ์์ค.
VS 2017.4์์ ๋ฐฉ๊ธ ์ฒดํฌ์ธํ์ง๋ง ์ฌ์ ํ F# ํ๋ก์ ํธ์ ์ฌ๋ฌ ํ๋ ์์ํฌ๋ฅผ ๋์์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ํด .NET Core๋ฅผ ์ง์ํ๋ฏ๋ก ์ง๊ธ์ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
JFYI: NuGet์ v4 rc1์ ์ถ์ ํ์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ง์ ํผ๋๋ก ์ฌ์ํ ํ์ ์์ด ์๋นํ๊ณ ํ ์คํธํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ชจ๋์๊ฒ ์๋ฆฌ๊ธฐ ์ํด - AutoFixture PR(#773)์ ๋ํ .Net Standard ์ง์์ด
v4
๋ถ๊ธฐ์ ๋ณํฉ๋์์ต๋๋ค. ๋น์ ์ ์ฐ๋ฆฌ์ ๊ฐ์ธ ํผ๋ ์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.AutoFixture ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๋ง์ด๊ทธ๋ ์ด์ ๋์์ต๋๋ค. ๋ค๋ฅธ ๊ธ๋ฃจ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ค์ ํ์ ์กฐ์น๋ฅผ ์ทจํ ๊ฒ์ ๋๋ค.