Language

RetryBaseAttribute Class

Definition

An abstract attribute that controls retrying a test method if it failed. It's up to the derived classes to define how the retry is done.

[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public abstract class RetryBaseAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
[System.Runtime.CompilerServices.Nullable(0)]
public abstract class RetryBaseAttribute : Attribute
[System.Runtime.CompilerServices.Nullable(0)]
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public abstract class RetryBaseAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)]
public abstract class RetryBaseAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type RetryBaseAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
[<System.Runtime.CompilerServices.Nullable(0)>]
type RetryBaseAttribute = class
    inherit Attribute
[<System.Runtime.CompilerServices.Nullable(0)>]
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type RetryBaseAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=false, Inherited=false)>]
type RetryBaseAttribute = class
    inherit Attribute
Public MustInherit Class RetryBaseAttribute
Inherits Attribute
Inheritance
RetryBaseAttribute
Derived
Attributes

Remarks

When applied to a test class, the attribute is used as a default for every test method declared on the class. A retry attribute placed directly on a test method takes precedence over a class-level one. The attribute is not inherited: applying it to a base test class does not apply it to derived test classes.

The runner only invokes ExecuteAsync(RetryContext) after the initial (non-retry) run produced an unacceptable result, i.e. at least one of the produced Microsoft.VisualStudio.TestTools.UnitTesting.TestResult entries had a Failed or Timeout outcome. It does not itself re-run the test on subsequent attempts: once ExecuteAsync(RetryContext) is entered, the derived implementation owns the retry loop and decides when to stop. Derived types may use IsAcceptableResultForRetry (as RetryAttribute does) or implement any other policy.

Constructors

Name Description
RetryBaseAttribute()

Methods

Name Description
ExecuteAsync(RetryContext)

Retries the test method. The details of how retry is done is left to the derived classes. Note that a first run of the method was already executed and failed before this method is called.

Applies to