Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/core/testing/mstest-analyzers/mstest0035.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
2 changes: 1 addition & 1 deletion docs/core/testing/mstest-analyzers/mstest0036.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
2 changes: 1 addition & 1 deletion docs/core/testing/mstest-analyzers/mstest0037.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
2 changes: 1 addition & 1 deletion docs/core/testing/mstest-analyzers/mstest0038.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
41 changes: 41 additions & 0 deletions docs/core/testing/mstest-analyzers/mstest0039.md
Original file line number Diff line number Diff line change
@@ -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 <xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowsException*?displayProperty=nameWithType> or <xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowsExceptionAsync*?displayProperty=nameWithType> which are no longer recommended.

## Rule description

<xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowsException*?displayProperty=nameWithType> and <xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert.ThrowsExceptionAsync*?displayProperty=nameWithType> are not recommended and may be deprecated in the future.

## How to fix violations

Instead, 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.
41 changes: 41 additions & 0 deletions docs/core/testing/mstest-analyzers/mstest0040.md
Original file line number Diff line number Diff line change
@@ -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 unobserved. So, a failing assertion in an `async void` method may go unnoticed. When using VSTest, such exceptions are very likely to be unnoticed. When using Microsoft.Testing.Platform, such exception *may* crash the process

## 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.

Check failure on line 41 in docs/core/testing/mstest-analyzers/mstest0040.md

View workflow job for this annotation

GitHub Actions / lint

Files should end with a single newline character

docs/core/testing/mstest-analyzers/mstest0040.md:41:41 MD047/single-trailing-newline Files should end with a single newline character https://github.com/DavidAnson/markdownlint/blob/v0.37.2/doc/md047.md
2 changes: 2 additions & 0 deletions docs/core/testing/mstest-analyzers/usage-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 4 additions & 0 deletions docs/navigate/devops-testing/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading