簡體   English   中英

在NUnit Parameterised測試中找不到合適的構造函數

[英]No suitable constructor was found in NUnit Parameterised tests

見下面的測試夾具:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;

/// <summary>
/// Tests relating to Harry Potter
/// </summary>
[TestFixture("Dumbledore")]
public class HarryPotterTests
{
    public string Name;

    public HarryPotterTests(string personName)
    {
        Name = personName;  
    }

    [Test]
    public void Test()
    {
        Console.WriteLine(Name);
    }
}

我想要實現的是查看參數化測試裝置的工作原理。 我之前沒有使用它們,所以這是我第一次嘗試它。

它對我來說很好看。 帶有字符串的構造函數,並在實際測試fixture屬性中傳入一個字符串。 它匯編。 測試只是將其寫入控制台窗口。

然而,測試失敗並顯示以下消息:

No suitable constructor was found

我錯過了一些明顯的東西嗎?

無論我在哪里設置斷點,都沒有任何打擊,所以它很早就失敗了。

我有這個問題。 它是由構造函數拋出錯誤引起的,而不是構造函數參數的任何問題。 在我的情況下,錯誤消息具有誤導性。

我遇到了這個問題 - 在NUnit下運行Test類通過Resharper 8運行。

但是,如果我這個表單中更改了TestFixture聲明

[TestFixture("CategoryName")]

這種形式:

[TestFixture(Category="CategoryName")]

然后他們工作......這也通過NUnit改進了一些東西 - 但是當我的特定測試發生時,我有Resharper幫助的connectionString和Entity Framework問題而NUnit沒有 - 但實際上我相信NUnit對后一種語法更滿意。

您的測試類完全有效,並在運行NUnit 2.6和.NET 4時返回Passed ,它們都使用NUnit GUI和Resharper 7測試運行器。

TestFixture構造函數中的參數類型與測試類構造函數的類型不匹配時,會出現錯誤。 例如,如果我添加該行:

[TestFixture(10)]

我將在NUnit GUI中收到以下錯誤:

ParameterizedNunit.HarryPotterTests(10).Test:
ParameterizedNunit.HarryPotterTests does not have a suitable constructor

這個特殊問題是JustCode的NUnit Test Runner中的一個錯誤。 使用Resharper 7的NUnit Runner和NUnit GUI重新運行它,兩者都通過了。

檢查構造函數是否具有可能失敗的邏輯。 事實證明我在構造函數中有一個調用(壞!)應該在TestFixtureSetUp 在Resharper中,如果在構造函數中拋出異常,則這是帶參數化測試裝置的默認錯誤消息。

相當明顯,但如果測試的構造函數不公開,也會發生。

以防萬一它可以幫助別人。 就我而言,我使用的是TestFixtureSource,以及一個為不同的TestFixtures構建組合的函數。 事實證明,數組中的元素數與構造函數的參數數量不匹配。 (我忘了-1)

暫無
暫無

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

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