MSTest を使用して C# (Visual Studio 2012) で TDD を実行しています。[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 を提供したり、それらのメンバーを public にしたりするのではなく、テスト クラスがテスト対象のクラスから継承するだけで、それらの private メンバーに直接アクセスできるようにするのが理にかなっているように思えました。これを行うより良い方法はありますか?