Index: [Article Count Order] [Thread]

Date:  Thu, 8 Aug 2002 15:19:32 +0900
From:  中西 庸文 <tsune40@....com>
Subject:  [XP-jp:03657] Re: NAnt
To:  <extremeprogramming-jp@....jp>
Message-Id:  <OE67yKVujz48toOpAK80000611d@....com>
References:  <OE28nTvjsENQn88ObUL0000577d@....com>
X-Mail-Count: 03657

中西です。
NAntのユニットテストコードを眺めていたら、
リフレクションで、同一アセンブリ内の全てのテストスイート
を収集する方法が使用されていました。
なるほどと思ったので、報告しておきます。

C#の例

using System;
using System.IO;
using System.Reflection;
using NUnit.Framework;

namespace Sample.Tests
{
  public class AllTests
  {
    public static ITest Suite
    {
      get
      {
        Assembly assembly = Assembly.GetExecutingAssembly();

        TestSuite suite = new TestSuite("Sample Tests");
        foreach(Type type in assembly.GetTypes())
        {
          if (type.IsSubclassOf(typeof(TestCase)) &&
!type.IsAbstract)
          {
            suite.AddTestSuite(type);
          }
        }
        return suite;
      }
    }
  }
}

VB.NETの例

Imports System
Imports System.IO
Imports System.Reflection
Imports NUnit.Framework

Namespace Sample.Tests

  Public Class AllTests

    Public Shared ReadOnly Property Suite() As ITest
      Get
        Dim myAssembly As [Assembly] =
[Assembly].GetExecutingAssembly

        Dim mySuite As New TestSuite("Sample Tests")

        Dim myType As Type
        For Each myType In myAssembly.GetTypes
          If (myType.IsSubclassOf(GetType(TestCase)) _
                          AndAlso Not myType.IsAbstract) Then
            mySuite.AddTestSuite(myType)
          End If
        Next

        Return mySuite
      End Get
    End Property

  End Class

End Namespace