Skip to content

Commit

Permalink
Document MSTEST0037 analyzer (#43601)
Browse files Browse the repository at this point in the history
  • Loading branch information
Youssef1313 authored Nov 27, 2024
1 parent 3208829 commit 18ecefa
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
59 changes: 59 additions & 0 deletions docs/core/testing/mstest-analyzers/mstest0037.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: "Use proper 'Assert' methods"
description: "Learn about code analysis rule MSTEST0037: Use proper 'Assert' methods."
ms.date: 11/17/2024
f1_keywords:
- MSTEST0037
- UseProperAssertMethodsAnalyzer
helpviewer_keywords:
- UseProperAssertMethodsAnalyzer
- MSTEST0037
author: Youssef1313
ms.author: ygerges
---
# MSTEST0037: Use proper 'Assert' methods

| Property | Value |
|-------------------------------------|------------------------------------------------------------------------|
| **Rule ID** | MSTEST0037 |
| **Title** | Use proper 'Assert' methods |
| **Category** | Usage |
| **Fix is breaking or non-breaking** | Non-breaking |
| **Enabled by default** | Yes |
| **Default severity** | Info |
| **Introduced in version** | 3.7.0 |
| **There is a code fix** | No |

## Cause

The use of <xref:Microsoft.VisualStudio.TestTools.UnitTesting.Assert> methods in a specific way when there is a better alternative.

## Rule description

There are multiple cases where you get this warning:

- The use of `Assert.IsTrue(<expression> == null)` (with all combinations, like `IsFalse`, `!= null`, `is null`, or `is not null`).

Using `Assert.IsNull(<expression>)` or `Assert.IsNotNull(<expression>)` is a better alternative.

- The use of `Assert.IsTrue(<expression1> == <expression2>)` (with all combinations, like `IsFalse` or `!=`).

Using `Assert.AreEqual(<expression1>, <expression2>)` or `Assert.AreNotEqual(<expression1>, <expression2>)` is a better alternative.

- The use of `Assert.AreEqual(true, <expression>)` or `Assert.AreEqual(false, <expression>)`.

Using `Assert.IsTrue(<expression>)` or `Assert.IsFalse(<expression>)` is a better alternative.

- The use of `Assert.AreEqual(null, <expression>)` or `Assert.AreNotEqual(null, <expression>)`.

Using `Assert.IsNull(<expression>)` or `Assert.IsNotNull<expression>` is a better alternative.

In many cases, the better alternatives provide better messages when they fail and are also easier to read.

## How to fix violations

Use the better alternative method.

## When to suppress warnings

You usually don't want to suppress warnings from this rule.
1 change: 1 addition & 0 deletions docs/core/testing/mstest-analyzers/usage-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ Identifier | Name | Description
[MSTEST0023](mstest0023.md) | DoNotNegateBooleanAssertionAnalyzer | Do not negate boolean assertions
[MSTEST0024](mstest0024.md) | DoNotStoreStaticTestContextAnalyzer | Do not store TestContext in a static member
[MSTEST0026](mstest0026.md) | AssertionArgsShouldAvoidConditionalAccessRuleId | Avoid conditional access in assertions
[MSTEST0037](mstest0037.md) | UseProperAssertMethodsAnalyzer | Use proper `Assert` methods
2 changes: 2 additions & 0 deletions docs/navigate/devops-testing/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ items:
href: ../../core/testing/mstest-analyzers/mstest0034.md
- name: MSTEST0035
href: ../../core/testing/mstest-analyzers/mstest0035.md
- name: MSTEST0037
href: ../../core/testing/mstest-analyzers/mstest0037.md
- name: Microsoft Testing Platform
items:
- name: Overview
Expand Down

0 comments on commit 18ecefa

Please sign in to comment.