[英]MSTest: No tests are run because no tests are loaded or the selected tests are disabled
我有一個具有以下結構的ac#解決方案:
mySolution
myProject
myProject.MSTests
References
Microsoft.VisualStudio.QualityTools.UnitTestFramework
sutMSTests.cs
sutMSTests.cs:
[TestClass()]
public class sutMSTests
{
[TestMethod]
public void MyTest0()
{
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2);
}
}
當我嘗試通過Test,Run,All Tests In Solution運行測試時,我在VS2008狀態行上得到以下信息:
未運行任何測試,因為未加載任何測試或禁用所選測試。
測試,Windows,測試視圖顯示沒有測試。
注意:我手動創建了測試(適用於xUnit.net),而不是使用Microsoft的向導。
我將手工創建的MSTest設置與我使用向導生成的另一個測試設置進行了比較, 它們看起來非常相似。
問題:上述錯誤消息的最可能原因是什么?
編輯2010-02-25:更多信息:
我右鍵單擊Solution Items文件夾,然后選擇Add,New Project,鍵入Test Projects,Test Documents :: Visual Studio Test Project模板。
新項目的默認設置不會檢測並傳遞測試“TestMethod1”。
但是,我的測試沒有顯示...所以我將我的測試方法復制並粘貼到默認的測試測試項目“TestProject1”中。
我的測試是在“TestProject”中檢測到的,但不是在原始位置。
我仔細比較了“TestProject1”的文件,組織和設置與我手工創建的測試項目。
此時,我猜測某些設置是由Visual Studio Test Project模板制作的,不易檢測到。
imo,手動創建測試項目就像使用Visual Studio Test Project模板創建測試項目一樣容易。
請注意:我並不是說我反對使用Visual Studio Test Project模板; 對我來說,我喜歡理解窗簾背后是什么,因為這讓我成為了一個更好的程序員。
對於googlers而言另一個 - 這個問題原來是我的問題,而且令我尷尬地愚蠢地對待我。 確保您的測試項目設置為構建在您正在使用的任何解決方案配置中。 如果沒有構建測試組件,VS將無法在不存在的組件中找到任何測試,並且您將頭撞到牆上一段時間:-)
可能有點晚了,但這個問題很好,我想我會為未來的googlers拋出一些碎屑。
Bryan Cook建議在他的博客文章中檢查ProjectTypeGuids,關於手動創建MS測試項目 。 顯然,您需要的神奇GUID是{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
用於c#和{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}
用於VB。 有關詳細信息,請參閱他的博文。
如果博客文章消失,您需要在csproj文件的主屬性組中添加以下元素:
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Google員工的另一個想法就是那里。 我的問題是試圖讓被忽略的測試再次運行。 如果刪除忽略標簽,則會出現相同的MS錯誤消息。 不會自動重新啟用測試。 本文將指導您完成最后一步。 http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html
如果Visual Studio工作正常,修復很簡單,即使它不需要。
總結其他人的貢獻,特別是在本文中 ,這里最終對我有用:
[TestClass]
並且它都標記為[TestMethod]
,並且不使用屬性[Ignore]
原來的海報確實這樣做了,但是在沒有這樣做之后我到了這里:
確保[TestClass]
聲明在頂部,公共范圍:
namespace XYZ.API.Repository.Tests
{
[TestClass()]
public class ClientTests
{
我只是手動完成了這個:
使用以下代碼創建了一個新的C#類庫項目:
namespace SO_Answer
{
public class Class1
{
public void Test()
{
var k = "Hello";
}
}
}
保存項目,然后轉到“文件 - >添加 - >新項目”並選擇“測試項目”。 在VS創建單元測試項目之后,我添加了對我之前創建的類庫項目的引用。
在我的測試中我有這個代碼:
namespace Unit_Test
{
/// <summary>
/// Summary description for UnitTest1
/// </summary>
[TestClass]
public class UnitTest1
{
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext { get; set; }
#region Additional test attributes
// You can use the following additional attributes as you write your tests:
// Use ClassInitialize to run code before running the first test in the class
// [ClassInitialize()]
// public static void MyClassInitialize(TestContext testContext) { }
// Use ClassCleanup to run code after all tests in a class have run
// [ClassCleanup()]
// public static void MyClassCleanup() { }
// Use TestInitialize to run code before running each test
// [TestInitialize()]
// public void MyTestInitialize() { }
// Use TestCleanup to run code after each test has run
// [TestCleanup()]
// public void MyTestCleanup() { }
#endregion
/// <summary>
/// The test method 1.
/// </summary>
[TestMethod]
public void TestMethod1()
{
var f = new Class1();
}
}
}
我添加的唯一代碼是一個using語句和var f = new Class1();
聲明。 看看MSTest跑步者,我可以看到TestMethod1
出現。
我想不出你的單元測試沒被拿起的原因。 我唯一一次這樣做是因為我使用MSTest跑步者試圖錯誤地查看NUnit測試。 嘗試從頭開始。
我收到了相同的消息,結果證明我在網絡驅動器上有我的單元測試項目。 一旦我把它移動到本地它運行正常。 如果您收到此錯誤,只需嘗試一下。 約翰
這可能是另一個原因。 檢查解決方案是否在64位上運行。 如果是這樣,將其更改為x86。
對於后代:我剛剛發現將測試標記為靜態使它們無聲地無法出現在測試列表中。 顯然這是不允許的。
沒有其他答案對我有用。 我一直在輸出窗口中收到以下消息:
------ Discover test started ------
========== Discover test finished: 2 found (0:00:00.1310428) ==========
No tests found to run.
在我的例子中,問題只發生在我創建一個名為0-Local的新配置之后。 我必須將<DebugSymbols>true</DebugSymbols
到我的csproj文件的相關部分,所以它看起來像這樣:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '0-Local|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\0-Local\</OutputPath>
</PropertyGroup>
這必定是一個錯誤,並且是一種絕對的痛苦,特別是因為您必須單獨重新啟用每個單獨的測試方法。 然而,有點iof橫向思維產生了更好的解決方案 - 重命名測試類並重建。 然后重命名。 似乎工作。 哎呀 - 不,不。 重命名該類可以工作,但當它重命名時,它將恢復為原始設置。 訣竅是關閉Visual Studio並刪除.vsmdi(visual studio測試元數據)文件。 這將重新生成。
當您遇到此問題時,在Visual Studio中,您必須創建一個測試項目。 1.在工具欄中選擇測試,然后選擇“新測試”。 創建項目,此時創建測試方法。 它應該在這一點之后起作用。
有同樣的問題,但閱讀以前的答案,一切看起來都不錯。
在我的情況下,我剛剛運行測試套件做了一個小改動,構建了解決方案並嘗試運行測試。 不行。 我嘗試過多次建造並尋找其他人嘗試過的問題。 仍然沒有去。
我在我的一個測試方法中輸入enter來添加一個新的並點擊F6來構建解決方案並單擊運行Unit Tests。
答對了! 一切順利。
您的解決方案中是否有VSMDI文件? 我相信這個文件是必需的(未經驗證)。
我正在使用public TestContext TestContext
方法寫入測試輸出並將范圍更改為private
。 這使得每個測試都無法被發現。 將其改回public
有所幫助。
另一個使用NUnit的谷歌,特別是那些從MS Unit測試遷移到NUnit的人。 請從項目文件中刪除將項目標識為MS Test項目的項目類型Guids。
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
如果您的代碼是CLI(托管c ++)並且您的測試類繼承自抽象基類,請確保您的測試類實現了基本的純虛方法。 如果你沒有實現它,你可能會看到“沒有運行測試”消息。
這也是我面臨的典型問題。 但我所遵循的最簡單的解決方案是......只需構建一次項目並重新構建它。 這樣你就可以解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.