我正在使用MSTest在C#(Visual Studio 2012)中執行一些TDD。 我有一個類聲明[TestClass]
屬性。 我的測試類繼承自我試圖測試的類。爲什麼我的C#TestClass類抱怨(錯誤地)它的父類沒有無參數的構造函數?
父類有一個無參數的構造函數,但我得到一個編譯錯誤
'RatingsClass.OutputLine' does not contain a constructor that takes 0 arguments
這裏是我的基類,其參數的構造函數:
namespace RatingsClasses
{
public class OutputLine
{
public OutputLine()
{
Initialise("Parameterless constructor called");
}
(and so on)
下面是測試類從基類繼承。這會導致下面的生成錯誤:
'RatingsClass.OutputLine' does not contain a constructor that takes 0 arguments
代碼:
using RatingsClasses;
namespace RatingsKataV2
{
[TestClass]
public class RatingsTests: OutputLine
{
[TestMethod]
public void TestSingleTripRatingIs20()
{
(and so on)
此外,當我試圖直接從派生類的構造函數調用基類的無參數的構造函數,我得到很多的紅色波浪線和語法錯誤,如Constructor must have body
和Unexpected token
。
這是我嘗試調用基類的構造明確:
using RatingsClasses;
namespace RatingsKataV2
{
[TestClass]
public class RatingsTests: OutputLine
{
public RatingsTests(): OutputLine()
{
}
(the rest of the class goes here)
我在做什麼錯?
我這樣做的原因是我想測試我的基類的各個私人成員正在正確填充。我的測試類只是從它正在測試的類繼承而來,而不是提供getter和setter或者使這些成員公開,所以它可以直接訪問這些私有成員。有沒有更好的方法來做到這一點?
如果你得到「構造函數必須有身體」和「意外的令牌」(在你試圖顯式調用構造函數之前),那麼還有其他的錯誤。請提供一個簡短但完整的*程序,它不會編譯。 –
@JonSkeet:她得到這一行的錯誤:'Public RatingsTests():OutputLine()'顯然是不正確的。 –
您是否將代碼粘貼到問題中或鍵入?我懷疑你的基類有一個打字錯誤,你在輸入你的問題時沒有重複。 – phoog