簡體   English   中英

為什么在使用 TestCaseSource 時 nUnit 測試會被忽略?

[英]Why are nUnit tests just getting ignored when using TestCaseSource?

我很難讓 nUnit TestCaseSource 屬性在 nUnit 2.6.4.14350 中正常工作。

當通過 VS2010 運行單元測試時,它只是說測試被忽略,沒有任何關於原因的額外信息。 Create測試在測試結果查看器中顯示為灰色。

在我的情況下,被測試的類是 TestCaseSource 本身。 這就是我所擁有的:

public class TestClass
{
    static TestClass()     
    {
        PopulateIds();
    }

    public IEnumerable<object> CreateTestCases
    {
        get 
        {
            return _ids.Select(id => new TestCaseData(id).SetName("createTest_" + id));
        }
    }

    private static string[] _ids;

    private static void PopulateIds()
    {
        _ids = new string[] { "id123", // ... }
    }

    [TestFixtureSetUp]
    public void Init()
    {
        // this completes successfully
    }

    [Test, TestCaseSource("CreateTestCases")]
    public void Create(string Id)
    {
        // breakpoint here is never hit as test is ignored
    }
}

線索:

  • CreateBondTestCases getter 越來越受歡迎。 (在調用[TestFixtureSetUp]之前)。
  • [TestCaseSource(typeof(TestClass), ...)]不會改變任何東西。
  • public TestClass()不會改變任何東西。
  • public IEnumberable<TestCaseSource> CreateTestCasespublic IEnumberable CreateTestCases不會改變任何東西。
  • [TestCaseSource(typeof(TestClass), "asdfasdf")]導致失敗:System.Reflection.TargetParameterCountException:參數計數不匹配。

我看到了這個問題,但仍然無法讓它發揮作用。 我也試圖讓它像在這個答案中一樣工作,並得到相同的結果。 我想我一定在這里做了一些非常愚蠢的事情,但我太生氣了,看不到它是什么。 請問有人可以啟發我嗎?

您的問題很可能是由您的測試運行程序不支持TestCaseSource屬性引起的,特別是如果它被報告為Create NUnit 重命名使用 TestCaseSource 的測試,以將參數名稱組合到測試名稱中。 對於您的測試,它應該報告為createTest_id123 (測試名稱 + 參數值)。

使用 NUnit GUI 檢查您的程序集,以查看從那里運行時測試是否按預期工作。 如果他們這樣做,那么這將確認您的 TestRunner 是問題所在。 使用 VS2012+,您可以使用通過 Nuget 安裝的 NUnit 測試適配器來運行您的測試。 其他插件如 Resharper(取決於版本)應該支持該屬性,但我不確定哪些版本適用於 VS2010。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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