Nunit: NUnit์˜ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜๋Š” NUnit ์†์„ฑ์œผ๋กœ ์ธํ•ด ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2020๋…„ 01์›” 01์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nunit/nunit

TestActionAttribute ์—์„œ ํŒŒ์ƒ๋œ ์‚ฌ์šฉ์ž ์ง€์ • ํŠน์„ฑ์„ ๋งŒ๋“  ๋‹ค์Œ ์ตœ์‹  ๋ฒ„์ „์˜ NUnit์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•ด๋‹น ํŠน์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ NUnit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— NUnit์ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. app.config ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  NUnit ๋ฒ„์ „์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ผ๋ฐ˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ƒํƒœ: ๊ฒฐ๋ก  ์—†์Œ). ์ด๊ฒƒ์ด NUnit.ApplicationDomain ๋ฌธ์ œ #25 ์˜ ์›์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค

An exception was thrown while loading the test.
System.IO.FileLoadException: Could not load file or assembly 'nunit.framework, Version=3.7.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'nunit.framework, Version=3.7.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb'
   at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
   at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
   at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
   at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   at NUnit.Framework.Internal.TypeWrapper.GetCustomAttributes[T](Boolean inherit)
   at NUnit.Framework.Internal.Builders.DefaultSuiteBuilder.GetFixtureBuilderAttributes(ITypeInfo typeInfo)
   at NUnit.Framework.Internal.Builders.DefaultSuiteBuilder.BuildFrom(ITypeInfo typeInfo)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

  Exception doesn't have a stacktrace

๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ - ์†์„ฑ NUnit๊ณผ ์ด์ „ ๋ฒ„์ „์˜ ์ฐธ์กฐ๊ฐ€ - "๊ฒƒ ์•„๋‹Œ-์ˆ˜์ •"์œผ๋กœ ํ์‡„ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ ์ผ์ข…์„ ๊ฐ€์ง€๊ณ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฒ‰์œผ๋กœ ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์ƒ๊ฐ .

@ _repo_NUnitAttributesTargettingDifferentVersion์„ ํ†ตํ•ด ์žฌ์ƒ์‚ฐ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

docs enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๊ฒฐ๋ก ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์ด ํ™•์žฅ๋˜๋Š” NUnit ๋ฒ„์ „์— ์ž ๊ฒจ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์ด๊ฒƒ์ด ๋ช…ํ™•ํ•˜๊ณ  ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ€๋Šฅํ•œ ํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๊ณ  ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ๋จผ์ € ์‹œ๋„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋‚˜๋Š” ๊ฒฐ๋ก ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์ด ํ™•์žฅ๋˜๋Š” NUnit ๋ฒ„์ „์— ์ž ๊ฒจ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ์ด๊ฒƒ์ด ๋ช…ํ™•ํ•˜๊ณ  ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ€๋Šฅํ•œ ํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๊ณ  ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ๋จผ์ € ์‹œ๋„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‘ ๋ฌธ์„œ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ถฉ๋Œ ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Roslyn์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด์ง€๋งŒ, ์ด๊ฒƒ์ด ๋ถ„์„๊ธฐ๊ฐ€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋˜๋Š” ๋Ÿฐํƒ€์ž„ ๊ฒ€์‚ฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ(์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๊ฐœ์„ )

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰