diff --git a/docs/core/testing/mstest-analyzers/mstest0035.md b/docs/core/testing/mstest-analyzers/mstest0035.md index fc88e19ba0524..a303fc9ecbcdd 100644 --- a/docs/core/testing/mstest-analyzers/mstest0035.md +++ b/docs/core/testing/mstest-analyzers/mstest0035.md @@ -1,5 +1,5 @@ --- -title: "[DeploymentItem] can be specified only on test class or test method." +title: "MSTEST0035: [DeploymentItem] can be specified only on test class or test method." description: "Learn about code analysis rule MSTEST0035: `[DeploymentItem]` can be specified only on test class or test method." ms.date: 08/02/2024 f1_keywords: diff --git a/docs/core/testing/mstest-analyzers/mstest0036.md b/docs/core/testing/mstest-analyzers/mstest0036.md index e0a055466bc7e..8cc9d38a866b2 100644 --- a/docs/core/testing/mstest-analyzers/mstest0036.md +++ b/docs/core/testing/mstest-analyzers/mstest0036.md @@ -1,5 +1,5 @@ --- -title: "Do not use shadowing inside test class." +title: "MSTEST0036: Do not use shadowing inside test class." description: "Learn about code analysis rule MSTEST0036: Do not use shadowing inside test class." ms.date: 08/19/2024 f1_keywords: diff --git a/docs/core/testing/mstest-analyzers/mstest0037.md b/docs/core/testing/mstest-analyzers/mstest0037.md index 6c37be8bc677e..06e9e9e3f9441 100644 --- a/docs/core/testing/mstest-analyzers/mstest0037.md +++ b/docs/core/testing/mstest-analyzers/mstest0037.md @@ -1,5 +1,5 @@ --- -title: "Use proper 'Assert' methods" +title: "MSTEST0037: Use proper 'Assert' methods" description: "Learn about code analysis rule MSTEST0037: Use proper 'Assert' methods." ms.date: 11/17/2024 f1_keywords: diff --git a/docs/core/testing/mstest-analyzers/mstest0038.md b/docs/core/testing/mstest-analyzers/mstest0038.md index 09423518792da..d0f0e5b6c06bc 100644 --- a/docs/core/testing/mstest-analyzers/mstest0038.md +++ b/docs/core/testing/mstest-analyzers/mstest0038.md @@ -1,5 +1,5 @@ --- -title: "Don't use 'Assert.AreSame' or 'Assert.AreNotSame' with value types" +title: "MSTEST0038: Don't use 'Assert.AreSame' or 'Assert.AreNotSame' with value types" description: "Learn about code analysis rule MSTEST0038: Don't use 'Assert.AreSame' or 'Assert.AreNotSame' with value types" ms.date: 01/06/2025 f1_keywords: diff --git a/docs/core/testing/mstest-analyzers/mstest0039.md b/docs/core/testing/mstest-analyzers/mstest0039.md new file mode 100644 index 0000000000000..e6f63c5d5762f --- /dev/null +++ b/docs/core/testing/mstest-analyzers/mstest0039.md @@ -0,0 +1,41 @@ +--- +title: "MSTEST0039: Use newer 'Assert.Throws' methods" +description: "Learn about code analysis rule MSTEST0039: Use 'Assert.ThrowsExactly' instead of 'Assert.ThrowsException'" +ms.date: 01/17/2025 +f1_keywords: +- MSTEST0039 +- UseNewerAssertThrowsAnalyzer +helpviewer_keywords: +- UseNewerAssertThrowsAnalyzer +- MSTEST0039 +author: Youssef1313 +ms.author: ygerges +--- +# MSTEST0039: Use newer 'Assert.Throws' methods + +| Property | Value | +|-------------------------------------|------------------------------------------------------------------------| +| **Rule ID** | MSTEST0039 | +| **Title** | Use newer 'Assert.Throws' methods | +| **Category** | Usage | +| **Fix is breaking or non-breaking** | Non-breaking | +| **Enabled by default** | Yes | +| **Default severity** | Info | +| **Introduced in version** | 3.8.0 | +| **Is there a code fix** | Yes | + +## Cause + +The use of or , which are no longer recommended. + +## Rule description + + and are not recommended and might be deprecated in the future. + +## How to fix violations + +Use `Assert.ThrowsExactly` or `Assert.ThrowsExactlyAsync` instead of `Assert.ThrowsException` or `Assert.ThrowsExceptionAsync`. + +## When to suppress warnings + +Do not suppress a warning from this rule. It's strongly recommended to move from the old APIs to the new ones. diff --git a/docs/core/testing/mstest-analyzers/mstest0040.md b/docs/core/testing/mstest-analyzers/mstest0040.md new file mode 100644 index 0000000000000..74bb770e9bc27 --- /dev/null +++ b/docs/core/testing/mstest-analyzers/mstest0040.md @@ -0,0 +1,41 @@ +--- +title: "MSTEST0040: Do not assert inside 'async void' contexts" +description: "Learn about code analysis rule MSTEST0040: Do not assert inside 'async void' methods, local functions, or lambdas because they may not fail the test" +ms.date: 01/17/2025 +f1_keywords: +- MSTEST0040 +- AvoidUsingAssertsInAsyncVoidContextAnalyzer +helpviewer_keywords: +- AvoidUsingAssertsInAsyncVoidContextAnalyzer +- MSTEST0040 +author: Youssef1313 +ms.author: ygerges +--- +# MSTEST0040: Do not assert inside 'async void' contexts + +| Property | Value | +|-------------------------------------|------------------------------------------------------------------------| +| **Rule ID** | MSTEST0040 | +| **Title** | Do not assert inside 'async void' contexts | +| **Category** | Usage | +| **Fix is breaking or non-breaking** | Non-breaking | +| **Enabled by default** | Yes | +| **Default severity** | Warning | +| **Introduced in version** | 3.8.0 | +| **Is there a code fix** | No | + +## Cause + +The use of any assertion method in an `async void` method, local function, or lambda. + +## Rule description + +Exceptions that are thrown in an `async void` context are unhandled. A failing assertion in an `async void` method will be swallowed and will not crash the process when using VSTest under .NET Framework. Under .NET, a failing assertion in an `async void` method might crash the process when using Microsoft.Testing.Platform or VSTest. In cases where a custom `SynchronizationContext` is present that catches the exception, the failing assertion might be silently swallowed. + +## How to fix violations + +Refactor the code to not use assertions in `async void`. + +## When to suppress warnings + +Do not suppress a warning from this rule. diff --git a/docs/core/testing/mstest-analyzers/usage-rules.md b/docs/core/testing/mstest-analyzers/usage-rules.md index cbd2bdfa23b9a..8df56f13079bb 100644 --- a/docs/core/testing/mstest-analyzers/usage-rules.md +++ b/docs/core/testing/mstest-analyzers/usage-rules.md @@ -35,3 +35,5 @@ Identifier | Name | Description [MSTEST0035](mstest0035.md) | UseDeploymentItemWithTestMethodOrTestClassTitle | `[DeploymentItem]` can be specified only on test class or test method [MSTEST0037](mstest0037.md) | UseProperAssertMethodsAnalyzer | Use proper `Assert` methods [MSTEST0038](mstest0038.md) | AvoidAssertAreSameWithValueTypesAnalyzer | Don't use `Assert.AreSame` or `Assert.AreNotSame` with value types +[MSTEST0039](mstest0039.md) | UseNewerAssertThrowsAnalyzer | Use newer 'Assert.Throws' methods +[MSTEST0040](mstest0040.md) | AvoidUsingAssertsInAsyncVoidContextAnalyzer | Do not assert inside 'async void' contexts diff --git a/docs/navigate/devops-testing/toc.yml b/docs/navigate/devops-testing/toc.yml index 4a64586b2510c..53dc1493cd805 100644 --- a/docs/navigate/devops-testing/toc.yml +++ b/docs/navigate/devops-testing/toc.yml @@ -193,6 +193,10 @@ items: href: ../../core/testing/mstest-analyzers/mstest0037.md - name: MSTEST0038 href: ../../core/testing/mstest-analyzers/mstest0038.md + - name: MSTEST0039 + href: ../../core/testing/mstest-analyzers/mstest0039.md + - name: MSTEST0040 + href: ../../core/testing/mstest-analyzers/mstest0040.md - name: Microsoft Testing Platform items: - name: Overview