问题
In Visual Studio 2010 Pro, how can I easily convert a classic assembly to a ms unit test assembly ?
It there a flag to activate in the .csproj file ?
回答1:
The problem is that test projects are "marked" on the project file - you can convert a class library to Test project follow these four simple steps:
- Unload the project (.prj) file and then open it for update.
add the following line to the project
C#:<Project> <PropertyGroup> <AssemblyName>....</AssemblyName> <!-- add this line below --> <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> </PropertyGroup> </Project>
VB -
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F- 5ABD9991F28F}</ProjectTypeGuids>
- Re-load the project back
- Run you (now working) tests
Note that you'll need to manually add reference to Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll in order to be able to use test related attributes
Update: In the upcoming MSTest V2 this will not be nesessery as MSTest becomes a NuGet package which works just like NUnit/XUnit
回答2:
In Visual Studio 2017 you can add nuget packages MSTest.TestAdapter
and MSTest.TestFramework
to your C# project and from then on use [TestClass]
with [TestMethod]
attributes. They will be automatically discovered and listed in the Test Explorer
. A manual added ProjectTypeGuids
is not needed to enable tests.
// MyFancyClassTests.cs
namespace MyTests
{
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class MyFancyClassTest
{
private readonly MyFancyClass _MyFancyClass;
public MyFancyClassTest()
{
_MyFancyClass= new MyFancyClass();
}
[TestMethod]
public void MyFancyClass_UninitializedName_ReturnsEmptyString()
{
Assert.AreEqual(string.Empty, _MyFancyClass.Name);
}
}
}
回答3:
Unit Test Project is only Class Library which have classes with attribute [TestClass], and .csproj file doesn't have any flags. You can add class to your project and set attribute [TestClass] and it will be test class.
来源:https://stackoverflow.com/questions/3012571/how-to-convert-an-existing-assembly-to-a-ms-unit-test-assembly