簡體   English   中英

MSTest:未運行任何測試,因為未加載任何測試或禁用所選測試

[英]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工作正常,修復很簡單,即使它不需要。

總結其他人的貢獻,特別是在本文中 ,這里最終對我有用:

  • 使用配置管理器確保選擇您的測試項目以構建您正在使用的任何配置和平台(例如:configuration = Debug和platform = x86)
  • 確保你的方法屬於[TestClass]並且它都標記為[TestMethod] ,並且不使用屬性[Ignore]
  • 使用“測試視圖”查找測試。 測試視圖
  • 打開“屬性”窗口( F4 ),確保已啟用測試 啟用

原來的海報確實這樣做了,但是在沒有這樣做之后我到了這里:

確保[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM