Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
76e9836
Create unit-testing-mstest-migration-from-v1-to-v3.md.md
engyebrahim Nov 6, 2024
412dcf7
Rename unit-testing-mstest-migration-from-v1-to-v3.md.md to unit-test…
engyebrahim Nov 6, 2024
223acf1
Update toc.yml
engyebrahim Nov 6, 2024
109ddd6
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
b4d7056
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
5d3ce9b
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
d55d262
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
f3d2dbb
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
d4532fe
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
ecaedba
Update toc.yml
engyebrahim Nov 6, 2024
0fce956
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
d127c17
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
e52d2c4
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
7c2aae9
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
f6c111d
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
4a8b05d
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
b9aefab
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
d929027
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
154aa73
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
250925a
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
832923d
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
d58f8e8
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
b0af89d
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
246cb6b
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
4146acd
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
25191a0
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
ee17725
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
23892dc
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
4b44b63
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 6, 2024
00266c9
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
1d863d4
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
93860a1
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
93547b4
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
99940a1
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
1e894e9
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
7d6d9bb
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
2938c94
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
c138a36
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
474e7ee
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
9ad505e
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
6abbff6
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
fefb548
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
acb6c77
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
f7d4f67
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
c196f57
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
d2f6bed
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
2156cda
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
75083a3
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
3550247
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
e343e48
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
d9ccf05
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
d17b0d7
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
1fac0b5
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
5a66197
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
36b3b5b
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 7, 2024
c9d32ee
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
4d2868e
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
ab49a8e
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
7e13b40
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
6ae6e7e
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
742fabf
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
2bfd015
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
b2c88b3
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
774d60c
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
7fee097
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 8, 2024
0f83f74
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
72e7ed1
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
df2e02c
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
504ea74
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
523a612
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
6db4bad
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
05c3aa5
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
4be47ad
Update docs/navigate/devops-testing/toc.yml
engyebrahim Nov 11, 2024
6d0a818
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
2da2b01
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
c627338
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
3218c7e
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
8f5a035
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
153210f
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
4d8a4e0
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
fdbbd54
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
72e262a
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
39ac5c6
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
fe556ab
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
7adeacc
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
2601ceb
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
745548e
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
1537d92
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
5601126
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
64a4eb7
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
41c588d
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
ba7dcf1
Update docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
cf98bd3
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
abbfd0e
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
7ca75ab
Update unit-testing-mstest-migration-from-v1-to-v3.md
engyebrahim Nov 11, 2024
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
224 changes: 224 additions & 0 deletions docs/core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
---
title: MSTest migration to v3
description: Migration guide.
author: engyebrahim
ms.author: enjieid
ms.date: 11/06/2024
---

# MSTest v3 Migration Guide

## Overview

This guide assists users in upgrading their MSTest projects from v0/v1 to MSTest v3. MSTest v3 introduces new features, improvements, and some breaking changes.

---

## Introduction and Motivation

Migrating to MSTest v3 offers several benefits:

- Improved test execution speeds and memory efficiency.
- Stricter validation for more reliable tests.
- Leveraging modern .NET features and cross-platform compatibility.

---

## Steps to Migrate

### 1. Remove Assembly Reference

Remove the `Microsoft.VisualStudio.QualityTools.UnitTestFramework` reference from your project.

```xml
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>False</Private>
</Reference>
```

### 2. Update Your Project

- **NuGet Package**: Install the latest [MSTest](https://www.nuget.org/packages/MSTest).
- **Project File**: Update your project file to use MSTest SDK.

```xml
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
```

### 3. Update Your Code

- **Replace Deprecated Methods**: Update deprecated methods to newer versions.

- **Assert.AreEqual/AreNotEqual (with object)** → Use generic versions.

**Before** (deprecated):

```csharp
Assert.AreEqual(expectedObject, actualObject);
Assert.AreNotEqual(expectedObject, actualObject);
```

**After** (using generics):

```csharp
Assert.AreEqual<object>(expectedObject, actualObject);
Assert.AreNotEqual<object>(expectedObject, actualObject);
```

- **Assert.AreSame/AreNotSame (with object)**Use generic versions.

**Before** (deprecated):

```csharp
Assert.AreSame(expectedObject, actualObject);
Assert.AreNotSame(expectedObject, actualObject);
```

**After** (using generics):

```csharp
Assert.AreSame<object>(expectedObject, actualObject);
Assert.AreNotSame<object>(expectedObject, actualObject);
```

- **Test Initialization**: Use `TestInitialize` methods for async initialization.
- **Cleanup**: Use `TestCleanup` methods or the `Dispose` pattern for cleanup.
- **RunSettings**: The `.testsettings` file is no longer supported, meaning `<LegacySettings>` is also no longer available. Use [.runsettings](https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2022) for test configuration.
---

## New Features in MSTest v3

- Improved defaults for test projects
- Simplified setup and usage
- Enhanced extensibility of the MSTest runner
- New Roslyn-based code analyzers for improved test development
- Support for WinUI applications
- In-assembly parallel execution
- Dynamic data sources for data-driven tests

---

## Deprecated Features

- Dropped support for:
- **.NET Framework 4.5** (use .NET 4.6.2 or higher)
- **.NET Standard 1.0** (use .NET Standard 2.0)
- **UWP versions before 16299**
- **WinUI versions before 18362**
- **.NET 5** (use .NET Core 3.1 or .NET 6)

---

## Breaking Changes and Removed APIs

### Assertion Overloads

MSTest v3 removes certain `Assert` overloads that accept object types to promote type-safe assertions. Update tests using these overloads to specify types explicitly.

**Example**:

```csharp
// Old (v0/v1)
Assert.AreEqual(expected, actual); // both are objects
// New (v3)
Assert.AreEqual<int>(expectedInt, actualInt); // specify the type
```

### DataRowAttribute Updates

The `DataRowAttribute` constructors have been simplified in MSTest v3. Update parameterized tests using `DataRow` to align with the revised constructors.

**Example**:

```csharp
[TestMethod]
[DataRow(1, "test")]
public void MyTestMethod(int number, string text) { ... }
```

### Timeout Settings

Timeout settings are standardized across frameworks in MSTest v3. Verify and adjust any timeout configurations in existing tests for compatibility.

---

## Configuration Changes

### Settings and Configuration Files

MSTest v3 supports both XML and JSON formats for configuration files.

1. **Verify Configurations**: Ensure that existing `.runsettings` files align with MSTest v3’s syntax and structure.
2. **Convert to JSON (if applicable)**: For JSON-based configurations, convert XML settings to JSON format.

---

## Parallel Execution and Performance Optimization

### New Parallelism Options

Configure parallel execution in `.runsettings` or JSON configuration files to improve performance.

**Example**:

```json
{
"RunConfiguration": {
"MaxCpuCount": -1 // Uses all available processors
}
}
```

### Improved Resource Usage

MSTest v3 optimizes resource management, resulting in lower memory usage and better CPU efficiency.

---

## Handling Obsolete Attributes and Migrating Custom Extensions

Review deprecated attributes, such as `[DeploymentItem]`, and replace them with MSTest v3 alternatives where possible.

---

## Code Analyzers and Best Practices

MSTest v3 includes built-in code analyzers for best practices, avoiding configuration pitfalls, and proper use of MSTest attributes and settings.

---

## Sample Code: Migration Example

### Before (MSTest v1)

```csharp
[TestMethod]
[Timeout(1000)]
[DataRow(1, "data")]
public void ExampleTestMethod(int number, string data) {
Assert.AreEqual(number, Convert.ToInt32(data));
}
```

### After (MSTest v3)

```csharp
[TestMethod]
[Timeout(1000)]
[DataRow(1, "data")]
public void ExampleTestMethod(int number, string data) {
Assert.AreEqual<int>(number, Convert.ToInt32(data));
}
```

---

## Additional Resources

- [New testin platform](https://learn.microsoft.com/dotnet/core/testing/unit-testing-platform-intro?tabs=dotnetcli)
4 changes: 4 additions & 0 deletions docs/navigate/devops-testing/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ items:
items:
- name: Overview
href: ../../core/testing/unit-testing-mstest-intro.md
- name: Migration
items:
- name: Migrate from MSTestV1 to MSTestV3
href: ../../core/testing/unit-testing-mstest-migration-from-v1-to-v3.md
- name: Getting started
items:
- name: Overview
Expand Down
Loading