Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠ° nunit
ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ NUnit ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ?
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠ΅ΠΌΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΡ (
10 ΡΠ΅ΠΊΡΠ½Π΄ Π½Π° ΡΠ΅ΡΡ), Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ NUnit. Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΌΠΎΠΈ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΠΌΠΈ. Π ΠΈΠ΄Π΅Π°Π»Π΅ Ρ Π±Ρ ΠΌΠΎΠ³ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΡ Π½Π° ΡΠ΄ΡΠΎ ββΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΠΎΠ².
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ PNUnit, Π½ΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ, ΠΈ Ρ Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ.
ΠΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ/ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ/ΠΎΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ²?
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ nunit runner Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ³ΠΎΠ½ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅ΡΡΡ nunit). Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΠ΅ΠΌΡ Π±ΡΠΈΠ³Π°Π΄Π° Π½Π΅ ΡΠ΄Π΅Π»Π°Π»Π° ΡΡΠΎΠ³ΠΎ ΡΠΆΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, MBUnit ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΡΡΠΎΠ², ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ MBUnit ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΡΠΎ ΠΈ NUnit, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΠΉ.
EDIT: ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , Ρ ΠΎΡΡ ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ Π±ΡΠ» Π²Π΅ΡΠ½ΡΠΌ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ NUnit ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 2 Π²Π°ΡΠΈΠ°Π½ΡΠ°:
NUnit Π²Π΅ΡΡΠΈΠΈ 3 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²:
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° Π² ΠΊΠ»Π°ΡΡ: [Parallelizable(ParallelScope.Self)] Π·Π°ΠΏΡΡΡΠΈΡ Π²Π°ΡΠΈ ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ.
β’ ParallelScope.None ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ.
β’ ParallelScope.Self ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΌ ΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ.
β’ ParallelScope.Children ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΈ ΡΠ΅ΡΡΠ° ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ.
β’ ParallelScope.Fixtures ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ±ΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ²ΡΡ DLL, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ MSBuild. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΌΠ°ΠΊΠ΅ΡΠΎΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ 8 ΡΠ΄ΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅: c:\proj> msbuild /m:8 RunTests.xml
RunTests.xml
Π ΡΡΠ° ΡΡΠ°ΡΡΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² NUnit Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΡΠΎ ΡΡΡΠ°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
nunit-console-x86.exe Model.dll Test.dll/ΠΈΡΠΊΠ»ΡΡΠΈΡΡ: MyCategory /xml=TestResults.xml /framework=net-4.0/noshadow
nunit-console-x86.exe Model.dll Test.dll/Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ: MyCategory /xml=TestResults.xml /framework=net-4.0/noshadow
ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΡΠ΄ΠΈΡΡ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΏΠ΅ΡΠ²ΡΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ±ΠΎΡΡ. ΠΡΡΠ³ΠΎΠΉ ΡΠ±ΠΎΠΉ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ «ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠ±ΠΎΡ».
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°? Π― Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°ΠΏΡΡΠΊΠ°. ΠΡΡΠ°ΡΠΈ, Π½Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows Server 2008 64-bit. Π― ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° Windows 7 64-Π±ΠΈΡΠ½ΠΎΠΉ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π°, ΠΈΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ (Ρ) ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΈΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ.
Update
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ TeamCity Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ² NUnit, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π²Π°ΡΠΈΡ Π½ΡΠΆΠ΄?
Π’ΠΎ, ΡΡΠΎ PNUnit ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π°ΡΠΏΠ΅ΠΊΡ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΡΠ΅Ρ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NCrunch Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ², ΠΈ Π²Ρ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ NCrunch ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Visual Studio.
ΠΏΠ»ΡΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΎΠ½ΡΡΠ° π
ΠΡΠ°Π²ΠΊΠ°: ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ/process Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ «ΠΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²: ΠΎΠ΄ΠΈΠ½, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ». ΠΡΠΏΡΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π±Π΅Π³ΡΠ½ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΈΠΌΠ΅Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΠ°Π²ΠΊΠ° 2: Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΎΡΡ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ, ΠΎΠΏΡΠΈΡ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° (/ process ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ) Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π°Π³Π΅Π½ΡΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΉ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ TBox ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Ρ Runner ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΠ SkyNet
TBox ΡΠΎΠ·Π΄Π°Π½ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² NUnit. ΠΡΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ .
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°:
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΎΠΌ (Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅),
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΡΠ΅ΡΡΡ Π½Π° testfixtureteardown ΡΠ±ΠΈΠ²Π°ΡΡ Π²ΡΠ΅ dev-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈΠ»ΠΈ chromerunner Π΄Π»Ρ qunit)
ΡΠ΅ΠΆΠΈΠΌ x86 ΠΈ ΠΏΡΠ°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ²
ΠΠ°ΠΆΠ΅ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ nunit runner, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ΅ΡΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΡΡΠΎΠ² (Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°), ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ.
ΠΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠΊΠΎ: NUnit
ΠΡΠΎ ΠΎΡΡΡΠ²ΠΎΠΊ ΠΈΠ· ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Β«ΠΠ΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Β» ΠΠ°ΡΠΊΠ° ΠΠ»ΠΈΡΡΠΎΠ½Π°, Π»ΡΠ±Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Syncfusion.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² Ρ NUnit Ρ Visual Studio:
ΠΡΡΠΈΠ±ΡΡ Visual Studio
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠ±ΠΎΡ
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠ° Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ±ΠΎΡΠ°
ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠ±ΠΎΡΠ΅.
ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°.
SetUpFixture (ΡΠΌ. ΠΠΈΠΆΠ΅)
ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ Π²ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ±ΠΎΡΡ.
SetUpFixture (ΡΠΌ. ΠΠΈΠΆΠ΅)
ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ Π²ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ±ΠΎΡΡ.
ΠΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅ΡΡ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ (ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ±ΠΎΡΠ°ΠΌ).
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΉ. Π NUnit ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΠ°ΡΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Visual Studio Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ NUnit:
ΠΡΡΠΈΠ±ΡΡ SetUpFixture
ΠΡΡΠΈΠ±ΡΡ SetUpFixture, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ, ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ AssemblyInitialize ΠΈ AssemblyCleanup Π² Visual Studio, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½. ΠΡΠ»ΠΈ Π²ΡΠ΅ Π²Π°ΡΠΈ ΠΊΠ»Π°ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΏΡΠΈΠ±ΠΎΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½, ΡΠΎ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ AssemblyInitialize ΠΈ AssemblyCleanup. Π£ΡΠΈΡΡΠ²Π°Ρ ΠΊΠΎΠ΄:
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ:
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½:
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΠΈΠΌΠ΅Π΅Ρ ΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ±ΠΎΡΠ°Ρ , Π½ΠΎ Π²ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·Π±ΠΎΡΠΊΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΡΠΌ. Β«ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈΒ» Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉΒ» Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ NUnit
NUnit ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π’Π΅ΡΡΠΎΠ²Π°Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ
ΠΡΡΠΈΠ±ΡΡ Category ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΡΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ . ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅ΡΡΠ°ΠΌ Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠ°ΠΌ Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ±ΡΠ°Π½Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ / include ΠΈ / exclude, ΠΈΠ»ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π·Π°ΠΏΡΡΠΊΠ° GUI:
NUnit ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
ΠΠΊΠ»Π°Π΄ΠΊΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π»Π΅Π²ΠΎΠΌ ΠΊΡΠ°Ρ Π±Π΅Π³ΡΠ½ΠΊΠ° GUI.
ΡΠ²ΠΈΡΠ°
ΠΡΡΠΈΠ±ΡΡ Suite ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΡΠ° ΠΎΠΏΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠ΅ΡΡΠΎΠ² (ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½ΠΈΠΉ) Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Category, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΠ°Π½Π΅Π΅.
Π―Π²Π½ΡΠΉ
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΡΡ, Π²ΡΠ±ΡΠ°Π² ΡΠ΅ΡΡ. Π’Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° β Π·Π°ΠΏΡΡΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ²Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ»ΡΠΆΠ±Π° Π·Π°ΠΏΡΡΠ΅Π½Π° ΠΈ Ρ. Π.
Π’Π°ΠΉΠΌ-Π°ΡΡ
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . ΠΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π±Π΅Π³ΡΠ½ ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ MaxTime, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½ΠΈΠΆΠ΅.
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅ Π°ΡΡΠΈΠ±ΡΡ Timeout ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ β Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ ΠΊΠΎΠ΄, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Ρ. Π.
ΠΡΡΠΈΠ±ΡΡΡ ΠΊΡΠ»ΡΡΡΡΡ
ΠΊΡΠ»ΡΡΡΡΠ°
ΠΡΡΠΈΠ±ΡΡ ΠΡΠ»ΡΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ±ΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΡΠ»ΡΡΡΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ΅ΡΡΡ. Π’Π΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΡΠ»ΡΡΡΡΡ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΡΠ°ΡΠ΅Π½Ρ ΡΡΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΌ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΊΡΠ»ΡΡΡΡΡ. Π’Π΅ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ±ΠΎΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΡΠ»ΡΡΡΡΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΡΠ»ΡΡΡΡΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ΅ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ±ΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΡΠ»ΡΡΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«frΒ» ΠΈΠ»ΠΈ Β«enΒ»; ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, TestA ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΊΡΠ»ΡΡΡΡΡ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«fr.Β». Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ:
ΠΡΠ»ΡΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Β«TestAΒ» Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΡΠ»ΡΡΡΡΠ° Π½Π΅ Β«ΡΡ.Β»
Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Β«TestBΒ», Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π° ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΡΠ»ΡΡΡΡΡ, Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ ΠΏΡΠΈΠ±ΠΎΡ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΡΠ»ΡΡΡΡΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ.
SetCulture
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΡΠ°ΠΌ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΠΡΠ»ΡΡΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠ° (ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅), Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΡΠ»ΡΡΡΡΠ° Π΄ΠΎ ΡΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΊΡΠ»ΡΡΡΡΡ, Ρ ΠΎΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ NUnit, Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΡΠ»ΡΡΡΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΊΡΠ»ΡΡΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΡΠ»ΡΡΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² TestA Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ TestB ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠ»ΡΡΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ² ΠΏΡΠΈΠ±ΠΎΡΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² TestC:
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² TestC
SetUICulture
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΊΡΠ»ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°; ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ (Π½Π΅ ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ):
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«1.2Β», ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠΌΡ Π² ΠΌΠΎΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΡΠ»ΡΡΡΡΠ΅, Π±ΡΠ΄ΡΡΠΈ en-US:
ΠΡΡΠΈΠ±ΡΡ SetUICulture Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ
ΠΡΠ»ΠΈ Ρ ΠΈΠ·ΠΌΠ΅Π½Ρ Π°ΡΡΠΈΠ±ΡΡ Π½Π° Β«SetCultureΒ», ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΊΡΠ»ΡΡΡΡΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΡΡΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Β«1 Π±Π°Π»Π» 2Β» ΠΈ Β«1 Π·Π°ΠΏΡΡΠ°Ρ 2Β»:
SetCulture ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ β ΡΡΠΎ ΡΠ΅ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠ°, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ ΡΠ΅ΡΡ:
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄Ρ (ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π³ΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠ°):
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π¦Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π°ΡΡΠΈΠ±ΡΡ Values ββΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ typeof ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠΎΠ² Π°ΡΡΠΈΠ±ΡΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ NUnit ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΡΠΌ. ΠΡΡΠΈΠ±ΡΡΡ Combinatorial, Pairwise ΠΈ Sequential).
ValuesSource
Π‘ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ ValueSource Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ IEnumerable Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° Sequential, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π° Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π’Π΅ΡΡΡ ValueSource
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΠΉ
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ NUnit Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠ° Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠΌ Β«xΒ» ΠΈ Β«sΒ», Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΊΠ°Π·Π°Π½ΠΎ Β«CombinatorialΒ»:
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΡ
ΠΏΠ°ΡΠ½ΡΠΉ
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ β ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΡΠΈΠ±ΡΡ Sequential:
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΡΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π΅:
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° (ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ) ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½Π° Π½ΡΠ»Ρ Π΄Π»Ρ Π΄Π²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ², Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ int, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΡΠΈ ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 0 Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ.
ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ
ΠΡΡΠΈΠ±ΡΡ Random ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π‘Π»ΡΡΠ°ΠΉΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ΅Π³Π΄Π° Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΏΡΡΠΈ ΡΠ΅ΡΡΠ°Ρ ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ:
Π‘Π»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ΅ΡΡ
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Π΄Π»Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠ½ΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΡΡΡΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠ»ΡΡΠ°Π΅Π². ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ Sequential, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ. ΠΡΡΠΈΠ±ΡΡ Sequential, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅ΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Random Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠ΅ΡΡΠ°.
ΠΡΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ
ΠΡΡΠΈΠ±ΡΡ Range ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ (long, float, double) ΡΡΠ΅Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π³Π°. Π¨Π°Π³ Π΄Π»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½ΠΎΠ²Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° Sequential Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ.
ΠΡΠ΅ΡΠ΅Π΄Π΅Π½Ρ
ΠΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π°ΡΡΠΈΠ±ΡΡ TestCase Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΠΏ Β«Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β») ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ TestCase.
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° TestFixture):
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΡΠΈΠ»Π° Π°ΡΡΠΈΠ±ΡΡΠ° TestCase Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² Π°ΡΡΠΈΠ±ΡΡΠ°Ρ , Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ typeof ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π°ΡΡΠΈΠ±ΡΡΠ°.
Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ TestCase ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ±ΡΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ Π½Π°Π±ΠΎΡΡ Π² ΡΡ ΠΆΠ΅ ΡΠ±ΠΎΡΠΊΡ, ΡΡΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ β Π°ΡΡΠΈΠ±ΡΡΡ Π½Π΅ ΡΠ΄Π°Π»ΡΡΡΡΡ Π² ΡΠ±ΠΎΡΠΊΠ΅ Π²ΡΠΏΡΡΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° TestCase ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΠΊΠΎΠ΄Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, Π° ΡΠΊΠΎΡΠ΅Π΅ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ. Π’Π°ΠΊ ΡΡΠΎ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡ MyMath Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ β Π² ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ DivideTest ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ½ΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΡΠ³ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ TestFixture, ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Type.FullName) ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ β Contains, Exact, Regex ΠΈΠ»ΠΈ StartsWith.
TestCaseSource
ΠΡΡΠΈΠ±ΡΡ TestCaseSource Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ ValueSource, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ ΡΠ°Π½Π΅Π΅; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ IEnumerable. ΠΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π°Ρ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° β ΡΡΠΎ int [] (ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΡΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ Sequential ΡΠΊΠ°Π·Π°Π½ Π΄Π»Ρ ΡΠ΅ΡΡΠ°, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π° Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΠΎ.
ΠΡΡΠ³ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ NUnit
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² NUnit, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π΄Π°Π»Π΅Π΅.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°
ΠΡΡΠΈΠ±ΡΡ Platform ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ΅ΡΡ. ΠΡΠ»ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΡΠ΅ΡΡ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.nunit.org/index.php?p=platform&r=2.6.2, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΡ ΠΈΠΌΡ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ±ΠΎΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ XML. Π§Π΅ΡΠ΅Π· ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ. ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° PropertyAttribute.
MaxTime
ΠΡΡΠΈΠ±ΡΡ MaxTime (Π΅ΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Timeout, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΠ°Π½Π΅Π΅) ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ±ΠΎΡ ΡΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠ΅Π²ΡΡΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠ° Timeout, ΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ.
ΠΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅
ΠΡΡΠΈΠ±ΡΡ Repeat ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ΅ΡΡΠ°ΠΌ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ². ΠΠ½ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠ΅ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ° Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ, ΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
RequiredAddin
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ (Π² ΡΠ°ΠΉΠ»Π΅ AssemblyInfo), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ².
RequiresMTA
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΊΠ²Π°ΡΡΠΈΡΠ΅. NUnit ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΡΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ:
ΠΡΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠΎΠ·Π΄Π°Π½ ΠΏΠΎΡΠΎΠΊ, Π²ΡΠ΅ ΡΠ΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
RequiresSTA
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΊΠ²Π°ΡΡΠΈΡΠ΅. NUnit ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΡΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ:
ΠΡΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠΎΠ·Π΄Π°Π½ ΠΏΠΎΡΠΎΠΊ, Π²ΡΠ΅ ΡΠ΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
RequiresThread
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. NUnit ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠΊΠ°Π·Π°Π½ Π² ΡΠ°ΠΉΠ»Π΅ AssemblyInfo:
ΠΡΠ»ΠΈ Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅ ΡΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, Π²ΡΠ΅ ΡΠ΅ΡΡΡ Π² ΠΏΡΠΈΠ±ΠΎΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π²ΠΎ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
ΠΡΠ»ΠΈ Π² ΡΠ΅ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ, ΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΠΎ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ²Π°ΡΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° MTA ΠΈΠ»ΠΈ STA.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΠ°:
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Π’Π΅ΡΡ A ΠΈ Π’Π΅ΡΡ C Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠ±ΠΎΡΠΎΠΌ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π’Π΅ΡΡ B, ΡΠΊΠ°Π·Π°Π² Π°ΡΡΠΈΠ±ΡΡ RequThread, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΠΎΠ² Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠ±ΠΎΡΠ΅.
Π’Π΅ΠΎΡΠΈΡ ΠΈ Datapoint (s)
Π’Π΅ΠΎΡΠΈΡ β ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ . ΠΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠ΅ΡΡ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ. Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Datapoint (s).
ΠΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ. ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° Datapoint, Π²ΡΠΎΡΠΎΠΉ β Π°ΡΡΠΈΠ±ΡΡ Datapoints:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, TheoryExample1, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ΅ΠΊ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, TheoryExample2, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ².
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ NUnit ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄Π°Π½Π½ΡΡ . ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠ° Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
ΠΡΠΈΡΠΈΠ½Π° Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 5/10 Π½Π΅ ΡΠ°Π²Π΅Π½ 2. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΎΠ³ΠΎΠ½Π° ΡΠ΅ΡΡΠ°, Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΡΠΎΠ²Π°Π»Ρ ΡΠ΅ΡΡΠ°:
Π’Π΅ΠΎΡΠΈΠΈ
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΈΡΠΌ, Π² ΡΠ΅ΡΡΠ΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ. Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ Π΄Π»Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°:
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠ΅ΠΎΡΠΈΠΈ ΠΈΠ·-Π·Π° ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, NUnit Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² bool ΠΈ enum.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΡΡΠΈΠ±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ β ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. ΠΠ°ΡΠ°ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΡΠΈΠ±ΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ β Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΡΡΠΈΠ±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠ°.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ°Π·ΡΡΠ²Π° ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π±Π°Π·Ρ ΠΊΠΎΠ΄Π°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ TestActionAttribute:
ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ· System.Attribute ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ITestAction:
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Β«Π¦Π΅Π»ΠΈΒ».
Π¦Π΅Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
Π¦Π΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ±ΠΎΡ, Π»ΠΈΠ±ΠΎ Π½Π°Π±ΠΎΡ) ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ActionTargets (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² NUnit.Framework):
ActionTargets.Default
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ActionTargets.Default ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡ ΠΊΠ°ΠΊ ΠΊ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠΌ (ΠΊΠ»Π°ΡΡΠ°ΠΌ), ΡΠ°ΠΊ ΠΈ ΠΊ ΡΠ΅ΡΡΠ°ΠΌ (ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ). ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ ΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»Ρ (ΠΊΠ»Π°ΡΡΡ) Π°ΡΡΠΈΠ±ΡΡ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ ActionTargets.Suite β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° ΡΠ΅ΡΡΠΎΠ².
ActionTargets.Test
ΠΡΠ»ΠΈ ActionTargets.Test Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ (ΠΊΠ»Π°ΡΡΡ) ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡ, ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ActionTargets.Suite
ΠΡΠ»ΠΈ ΡΠ΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ β Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
Π’Π΅ΡΡ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ActionTargets ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π°Π³Π°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ:
ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΡΠΈΠ±ΠΎΡΠ° (Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ²), ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ².
ΠΠ»Π°ΡΡ TestDetails
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π³ΠΎΡΠΎΠ²ΡΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ±ΠΎΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ΅ (ΠΈΠ· NUnit.Framework.TestDetails):
ΠΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ, ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΡΡΠ°ΠΌΠ±Π»Π΅ΠΈ
ΠΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Visual Studio Π΄Π»Ρ AssemblyInitialize ΠΈ AssemblyCleanup, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ» AssemblyInfo.cs Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ββΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°:
ΡΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ:
ΠΡΠ»ΠΈ ΡΠ΅Π»Π΅Π²ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Suite, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ² ΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»Π΅ΠΉ, Π²Π΅Π΄Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Β«Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ Π½Π°Π±ΠΎΡΠΎΠ²Β». ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ TargetActions.Test, ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ . ΠΠΎΡΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Target ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² / ΠΈΠ· ΡΠ΅ΡΡΠΎΠ² ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΠ²Π° Π²ΠΎΠΏΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ:
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
ΠΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ Π·Π°Π³Π»ΡΡΠΊΡ:
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ ΠΊ ΡΠ²Π΅ΡΠΈΠ»ΡΠ½ΠΈΠΊΡ:
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊΡ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΉ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Β«ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½Β» ΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ±ΠΎΡΠ°. ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ), ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π½ΠΈΠΆΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌΠΈ β ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΡΡΠ²Π°Π½ΠΈΡ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Test / Test Suite
ΠΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΎΡΠΌΡ ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π§ΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ β ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ°:
ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ Π°ΡΡΠΈΠ±ΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΠ°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ :
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΈ Ρ. Π. β ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
NUnit ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ
NUnit ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ NUnit.Framework.Assert, ΡΡΠΎ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ Assert Π² Visual Studio, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΠ°Π½Π΅Π΅. NUnit ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ:
IsEmpty / IsNotEmpty
ΠΡΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΈΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΡΡΡΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ:
ΠΠΎΠ»ΡΡΠ΅ / ΠΠ΅Π½ΡΡΠ΅
ΠΡΠΈ Π΄Π²Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΌΠΈ IComparable, ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ β ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΠ΅ΡΡΠ°.
GreaterOrEqual / LessOrEqual
ΠΡΠΈ Π΄Π²Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΌΠΈ IComparable, ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎΒ» ΠΈΠ»ΠΈ Β«ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎΒ» Π²ΡΠΎΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ β ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΠ΅ΡΡΠ°.
IsAssignableFrom / IsNotAssignableFrom
ΠΡΠ° ΠΏΠ°ΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΠ· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ IsInstanceOfType Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅ Visual Studio. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΡΡΠ²Π°Ρ:
ΠΡΠΎΡ ΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° A ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° B.
ΠΡΠ΄Π°Π΅Ρ / ΠΡΠ΄Π°Π΅Ρ / DoesNotThrow
ΠΠ΅ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΄Π°Π΅ΡΡΡ (ΠΈΠ»ΠΈ Π½Π΅Ρ) ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎΡ ΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ.
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΠΏ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
Π‘ΡΠΎΠΏΠΎΡ / ΡΠ»ΠΎΠ²
ΠΡΠΈ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠΏ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ . ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΠΌΠ΅ΡΠΎΠ΄ Throws Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ:
Π‘Π±ΠΎΡΠ½ΠΈΠΊ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ
Π ΠΊΠ»Π°ΡΡΠ΅ NUnit.Framework.CollectionAssert NUnit ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ΅ ΠΆΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ CollectionAssert Visual Studio, Ρ ΡΡΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π² ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ IEnumerable (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Ρ Visual Studio, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ICollection).
IsEmpty / IsNotEmpty
ΠΠ΅ΡΠΎΠ΄ CollectionAssert.IsEmpty ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ Assert.IsEmpty.
IsOrdered
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ AnObject ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ IComparable:
ΡΡΠΎΡ ΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ:
Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° NUnit.Framework.StringAssert ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ StringAssert Π² Visual Studio, Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΡΠ»ΠΈΡΠΈΡΠΌΠΈ:
ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π΄Π°Π»Π΅Π΅.
AreEqualIgnoringCase
Π£ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«AreEqualIgnoringCaseΒ» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ ΡΠ΅Π³ΠΈΡΡΡ.
IsMatch
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ StringAssert.Matches Π² Visual Studio β ΠΎΠ½ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π£ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° NUnit.Framework.FileAssert.
AreEqual / AreNotEqual
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΡΡΡΡ, ΠΎΠ½ΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ. ΠΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΡΠ°ΠΉΠ»Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Π²ΡΠ΄Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ FileNotFoundException.
Π£ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° NUnit.Framework.DirectoryAssert.
AreEqual / AreNotEqual
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π² Π΄Π²ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ.
IsEmpty / IsNotEmpty
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ.
IsWithin / IsNotWithin
ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΏΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠΎΡΠΌ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π±ΡΠ»Π΅Π²ΡΠΊΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡΡΠΈΠ½Ρ (Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Assert.IsTrue), ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΌΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ NUnit ΠΏΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠΈΡΠ½Π° Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΡΠΎΡ ΡΠ΅ΡΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
IsNaN
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«Π½Π΅ ΡΠΈΡΠ»ΠΎΠΌΒ». Π’ΠΈΠΏΠΈΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ ΠΈΠ· ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΠ»Π°ΡΡ assert ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²: