單元測試時候使用[ClassInitialize]會該方法必須是靜態的公共方法,不返回值並且應采用一個TestContext類型的參數報錯的解決辦法


 

using Microsoft.VisualStudio.TestTools.UnitTesting;

如果該DLL應用的是

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

版本為9.0.0.0 的話,則使用[ClassInitialize]會該方法必須是靜態的公共方法,不返回值並且應采用一個TestContext類型的參數報錯!不知道是否是微軟的BUG。

 

解決辦法:

將DLL修改為:C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

版本為10.1.0.0

[ClassInitialize]
public static void MyClassInitialize(TestContext context)
{
    SysConfig.LoadCfg();
}

 經過最后的測試發現:9.0.0.0.0 版本只能在vs2008上使用;10.0.0.0版本則可以在vs2008 vs2010 2012所有版本上面使用。

分享一個標准的ms unit 測試方法:

#region 附加測試特性
 
//編寫測試時,還可使用以下特性:

//使用 ClassInitialize 在運行類中的第一個測試前先運行代碼
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
}

使用 ClassCleanup 在運行完類中的所有測試后再運行代碼
[ClassCleanup()]
public static void MyClassCleanup()
{
}

使用 TestInitialize 在運行每個測試前先運行代碼
[TestInitialize()]
public void MyTestInitialize()
{
}

使用 TestCleanup 在運行完每個測試后運行代碼
[TestCleanup()]
public void MyTestCleanup()
{
}

#endregion

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM