http://en.www.prettyobjects.com/TSharp.aspx?sid=Overview

.NETのテスト用言語 T# という言語があります。
T#でテストのコードを単純化できたりするらしい。


C# の Unit Test でこーかいていたことが、
[TestFixture]

public class ProductTest

{

  [Test]

  public void SetPrice()

  {

    // Prepare

    Product product = new Product( "T#", 50 );

    Assert.AreNotEqual( 100, product.Price );

   

    // Execute

    product.Price = 100;

 

    // Verify

    Assert.AreEqual( 100, product.Price );

  }

}

 

T# という言語で書くと

 

testclass

{

 

  test

  {

 

    Product product = new Product( "T#", 50 );

    assert product.Price != 100;

 

 

    runtest product.Price = 100;

 

 

    assert product.Price == 100;

  }

}

 


C# で Assert.AreEqual() って書いてたところが、
T# では、 == で記述できる


C#
[TestFixture]
public class ProductTest
{
  private Product product;
  [SetUp]
  public void Setup()
  {
      product = new Product( "T#", 50 );
  }
  [Test]
  public void SetPrice()
  {
   // Prepare
    product.PropertyChanged += MyPropertyChangedHandler;
    eventIsRaised = false;
    Assert.AreNotEqual( 100, product.Price );
    // Execute
    product.Price = 100;
    // Verify
    Assert.AreEqual( 100, product.Price );
    Assert.IsTrue( eventIsRaised );
    product.PropertyChanged -= MyPropertyChangedHandler;
  }
   private bool eventIsRaised;
  private void MyPropertyChangedHandler( object sender,
                                         PropertyChangedEventArgs args )
 {
    eventIsRaised = true;
  }
}


T#

testclass

{

  private Product product;

 

  testcontext

  {

    product = new Product( "T#", 50 );

    runtest;

  }

 

  test

  {

    assert product.Price != 100;

    runtest product.Price = 100;

    assert product.Price == 100;

    assert raised product.PropertyChanged; // just one line!

  }

}


T# だとイベントが1行で書ける

 


 

VBでも、C#でも同じ言語で書けるのはいいとおもいつつ、
テスト用に新しい言語をおぼえるのかー
でも、C#で苦労してテストコードようの書き方をおぼえるのもあれだなー

と、いろいろなやむ今日この頃