DoNotParallelizeAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
排除測試、測試類別或測試組件,無法進行組裝內平行化。 受影響的測試絕不會與同一測試來源中的其他測試同時執行,且當啟用平行化時,會在該來源中所有可平行化測試結束後,延後執行順序執行。
public ref class DoNotParallelizeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false)]
public class DoNotParallelizeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Method)]
public class DoNotParallelizeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false)>]
type DoNotParallelizeAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Method)>]
type DoNotParallelizeAttribute = class
inherit Attribute
Public Class DoNotParallelizeAttribute
Inherits Attribute
- 繼承
-
DoNotParallelizeAttribute
- 屬性
備註
該屬性同時提供兩個保證,第二個則容易被忽略:
互斥。 攜帶此屬性的測試——無論是直接或透過其類別或組合語言——絕不會與同一來源中的其他測試同時執行。 它會自行運作。
延期。 當啟用裝譯內平行化時,排程器會將來源的測試分割為可平行化的集合與不可平行化的集合。 它會先完成整個可平行化集合,然後才在該來源執行的最後階段,一次測試一個測試,才執行不可平行化的集合。 由於分割是針對測試來源(組件)進行的,因此「最後執行」與「單獨執行」是相對於同一來源中其他測試的保證;跨越多個來源的跑線會為每個來源設置獨立的延遲尾端。
這使得該屬性的成本容易被低估。 延遲測試不能與同一來源中的其他測試重疊,因此其持續時間會 被加入 該來源的關鍵路徑,而非被同時進行的平行工作吸收。 因此,一個帶有此特性的慢速測試在其來源中成本過高:它會讓該來源的運行時間大致延長,且從不與來源中任何其他測試並行執行。 (它仍可能與其他來源的測試重疊,後者可能在不同主機上執行,因此此成本是針對來源的關鍵路徑,而不一定是整個執行過程。)
由於延後測試僅在可平行化集合結束後執行,若在可平行階段被取消或中止,執行可在未執行任何測試的情況下完成:「最後執行」與「當執行提前取消時,可能完全無法執行」皆為真。
平行化關閉時沒有影響。 MSTest 預設不會平行化;組裝內平行化可透過 ParallelizeAttribute () 等效執行設定或 MSTestParallelizeScope / MSTestParallelizeWorkers MSBuild 屬性選擇加入。[assembly: Parallelize] 當未啟用平行化時,每個測試都已連續執行,因此此屬性是惰性的——無需選擇退出。
此屬性可分為三個層級:
- 組裝 — 裝配中的所有測試都被排除在平行化之外,等同於停用該裝配的平行化。
- 課程 — 課堂中所有測驗皆被排除;課程的測驗在延期階段依序進行。
- 方法 ——僅排除並延後註解測試;其餘同級機車仍可並聯運行。
這是一種粗控:它完全選擇不使用平行性的測試。 當僅爭用特定共享資源時,偏好 ResourceLockAttribute,這會序列化宣告相同資源的測試,而非完全排除它們於平行化之外。 若測試同時具備這兩種屬性, DoNotParallelizeAttribute 且宣告的資源鎖無效:此類測試會在序列階段執行,且不會經過取得鎖的平行排程器。
建構函式
| 名稱 | Description |
|---|---|
| DoNotParallelizeAttribute() |
排除測試、測試類別或測試組件,無法進行組裝內平行化。 受影響的測試絕不會與同一測試來源中的其他測試同時執行,且當啟用平行化時,會在該來源中所有可平行化測試結束後,延後執行順序執行。 |