с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста 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. 7d2e98599ecef32ad9a72517288d7eb5. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-7d2e98599ecef32ad9a72517288d7eb5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 7d2e98599ecef32ad9a72517288d7eb5. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (NUnit ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ

Π’ΠΊΠ»Π°Π΄ΠΊΠ° для Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ находится Π½Π° Π»Π΅Π²ΠΎΠΌ ΠΊΡ€Π°ΡŽ Π±Π΅Π³ΡƒΠ½ΠΊΠ° GUI.

свита

Атрибут Suite прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ тСстовыС устройства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ участник консоли. Π­Ρ‚Π° опция доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² консоли. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ запуска Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… тСстов ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов (приспособлСний) Π»ΡƒΡ‡ΡˆΠ΅ поддСрТиваСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Category, описанным Ρ€Π°Π½Π΅Π΅.

Π―Π²Π½Ρ‹ΠΉ

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ тСст запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли графичСскому интСрфСйсу ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŽ явно сказано Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ тСст, Π²Ρ‹Π±Ρ€Π°Π² тСст. ВСст Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½, Ссли тСст являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ тСстов для запуска.

ИспользованиС этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° β€” запуск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… тСстов, ΠΊΠΎΠ³Π΄Π° это явно трСбуСтся, ΠΊΠΎΠ³Π΄Π° слуТба Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΈ Ρ‚. Π”.

Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ тСст выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² миллисСкундах. Если тСст ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π±Π΅Π³ΡƒΠ½ отмСняСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ сообщаСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСст Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ MaxTime, описанным Π½ΠΈΠΆΠ΅.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Timeout игнорируСтся β€” Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ тСст ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ просматриваСтС ΠΊΠΎΠ΄, просматриваСтС значСния ΠΈ Ρ‚. Π”.

Атрибуты ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹

ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°

Атрибут ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ тСсты. ВСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСцифичны для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΡ€Π°ΡˆΠ΅Π½Ρ‹ этим Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ тСстируСмыС ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹. ВСст ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ±ΠΎΡ€ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ, Ссли тСкущая ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° Π½Π΅ соотвСтствуСт ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π΅, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ написан тСст. НапримСр:

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠ±ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли тСкущая ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«frΒ» ΠΈΠ»ΠΈ Β«enΒ»; Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, TestA ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ тСст Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли для ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«fr.Β». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это устройство ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 37396afe3bdbde178254320562c6450c. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-37396afe3bdbde178254320562c6450c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 37396afe3bdbde178254320562c6450c. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π½ΠΎΠ΅ тСстированиС

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Β«TestAΒ» Π½Π΅ запускаСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ тСкущая ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° Π½Π΅ Β«Ρ„Ρ€.Β»

Π’Π°ΠΊΠΈΠ΅ тСсты, ΠΊΠ°ΠΊ Β«TestBΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° какая-Π»ΠΈΠ±ΠΎ спСцификация ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹, всСгда Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вСсь ΠΏΡ€ΠΈΠ±ΠΎΡ€ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ тСкущая ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° Π½Π΅ соотвСтствуСт.

SetCulture

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, примСняСмый ΠΊΠΎ всСму устройству ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ тСстам, устанавливаСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ Π½Π° врСмя тСста (ΠΈΠ»ΠΈ тСстов Π² ΠΏΡ€ΠΈΠ±ΠΎΡ€Π΅), Π° Π·Π°Ρ‚Π΅ΠΌ восстанавливаСт исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° Π΄ΠΎ этого, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ, хотя Π² соотвСтствии с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ NUnit, запуск тСстов для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ настройка ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ Π² устройствС Π½Π΅ влияСт Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСста с использованиСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°. НапримСр:

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² TestA Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ TestB ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π° установлСна ​​в ΠΏΡ€ΠΈΠ±ΠΎΡ€Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° пСрСопрСдСляСтся Π² TestC:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 5068ef12d1bf8164fb7d0308dbe1ed6e. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-5068ef12d1bf8164fb7d0308dbe1ed6e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5068ef12d1bf8164fb7d0308dbe1ed6e. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² TestC

SetUICulture

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса; ΠΎΠ΄Π½Π°ΠΊΠΎ, это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. НапримСр (Π½Π΅ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст, ΠΊΠ°ΠΊ это, это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ):

ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Β«1.2Β», ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΌΡƒ Π² ΠΌΠΎΠ΅ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π΅, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ en-US:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 2bb27731500e89f2a52046f9201a0f21. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-2bb27731500e89f2a52046f9201a0f21. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2bb27731500e89f2a52046f9201a0f21. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (Атрибут SetUICulture Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚

Если я измСню Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π½Π° Β«SetCultureΒ», Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся Ρ‰ΡƒΡ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Β«1 Π±Π°Π»Π» 2Β» ΠΈ Β«1 запятая 2Β»:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 79e00b870eb93f8ac5a618ed1b0b05e2. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-79e00b870eb93f8ac5a618ed1b0b05e2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 79e00b870eb93f8ac5a618ed1b0b05e2. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (SetCulture измСняСт прСдставлСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты β€” это тСсты, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст описываСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΈΡ… значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ запуска тСста, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ всС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

НапримСр, этот тСст:

ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Ρƒ (ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ тСста Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ тСста):

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 47779e12f410f607f9d79f5b63fa77ad. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-47779e12f410f607f9d79f5b63fa77ad. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 47779e12f410f607f9d79f5b63fa77ad. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования:

ЦСнности

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Values β€‹β€‹ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ тСста для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это значСния, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ значСния: константныС выраТСния, выраТСния typeof ΠΈΠ»ΠΈ массив Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ NUnit ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (см. Атрибуты Combinatorial, Pairwise ΠΈ Sequential).

ValuesSource

Π‘ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ValueSource Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ источник IEnumerable для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅, свойство ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ класса ΠΈΠ»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ класса. НапримСр, всС это допустимыС способы выраТСния источников стоимости:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС Π² тСстС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Sequential, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ исходныС значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 5697d43333fe7162069853ec984fb393. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-5697d43333fe7162069853ec984fb393. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5697d43333fe7162069853ec984fb393. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ВСсты ValueSource

ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ NUnit автоматичСски примСняСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ тСста Π²ΠΎ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… комбинациях. НапримСр:

ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎ всСм комбинациям Β«xΒ» ΠΈ Β«sΒ», нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡƒΠΊΠ°Π·Π°Π½ΠΎ Β«CombinatorialΒ»:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ad381bb6abbd3be71c0a9e43e783f138. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-ad381bb6abbd3be71c0a9e43e783f138. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ad381bb6abbd3be71c0a9e43e783f138. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ тСст

ΠΏΠ°Ρ€Π½Ρ‹ΠΉ

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ сущСствуСт, Π½ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ β€” ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½Ρ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹; ΠΎΠ΄Π½Π°ΠΊΠΎ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ игнорируСтся.

ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ тСсты Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ значСниям ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Если количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для строки Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. НапримСр, этот ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Sequential:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² этом Π²Ρ‹Π²ΠΎΠ΄Π΅:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 60befdf3f0c8d3925db34ec9e8b79c8a. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-60befdf3f0c8d3925db34ec9e8b79c8a. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 60befdf3f0c8d3925db34ec9e8b79c8a. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ строка (ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° значСния) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ для Π΄Π²ΡƒΡ… послСдних ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… тСстов, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ int, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈ случая, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π΅Π½ 0 для послСднСго случая.

случайный

Атрибут Random ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ с ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ тСстами для прСдоставлСния случайных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² всСгда Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² пяти тСстах со случайными значСниями:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. 15ea5caa52cb221cc451093b01ccb004. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-15ea5caa52cb221cc451093b01ccb004. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 15ea5caa52cb221cc451093b01ccb004. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ тСст

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ значСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ для Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° случайных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… тСстов Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сотни, Ссли Π½Π΅ тысячи тСстовых случаСв. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ 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.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ тСста:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ae070ddae7fca585c970980507d64bb8. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-ae070ddae7fca585c970980507d64bb8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ae070ddae7fca585c970980507d64bb8. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

ВСст A ΠΈ ВСст C Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅, созданном ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ВСст B, ΡƒΠΊΠ°Π·Π°Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ RequThread, выполняСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΈΡ… тСстов Π² этом ΠΏΡ€ΠΈΠ±ΠΎΡ€Π΅.

ВСория ΠΈ Datapoint (s)

ВСория β€” это ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт допущСния ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… значСниях. Если Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ Π½Π΅ выполняСтся, тСст Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Datapoint (s).

Π­Ρ‚ΠΈ Π΄Π²Π° класса эквивалСнтны. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Datapoint, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Datapoints:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ классС, TheoryExample1, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ дискрСтныС значСния Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ классС, TheoryExample2, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ массив.

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях NUnit создаст всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ тСста Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСдполоТСния:

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдполоТСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСст Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 5/10 Π½Π΅ Ρ€Π°Π²Π΅Π½ 2. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° тСста, допущСния Π½Π΅ приводят ΠΊ ΠΏΡ€ΠΎΠ²Π°Π»Ρƒ тСста:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. f07d38f546bd67e30e6ac16760244790. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit Ρ„ΠΎΡ‚ΠΎ. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit-f07d38f546bd67e30e6ac16760244790. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ максимальноС врСмя выполнСния тСста nunit. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f07d38f546bd67e30e6ac16760244790. Π£ мСня Π΅ΡΡ‚ΡŒ большой ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‡Π½Ρ‹ΠΉ тСст (Π’Π΅ΠΎΡ€ΠΈΠΈ

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ допущСниям, Π² тСстС Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† для тСорСтичСского тСста:

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ·-Π·Π° растущСго числа ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли явно Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, 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 Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт нСсколько слуТСбных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *