読者です 読者をやめる 読者になる 読者になる

IntelliTest の NUnit Test Generator

昨日紹介した NUnit Test Generator を使ってみました。

※ Azure の VS2015 RTMVM が初期言語が英語で、面倒で日本語化してないので文中のメニューとかも英語になってます。適当に置き換えて読んでください。

使い方

1. Extension をインストールする

VS の [Tools] > [Extentions and Updates] から "NUnit" で検索して Test Generator NUnit extenstion という拡張をインストールします。

2.テスト対象コードを書く

3.IntelliTest テストコードの生成

テスト対象メソッドコンテキストメニューから [Create IntelliTest] を選ぶと「Create IntelliTest」というウインドウが開くので、 [Test Framework] から NUnit or NUnit2 を選びます。すると、テストプロジェクトと IntelliTest のベースとなるテストコードが生成されます。ここで生成されるのは各テストケースに対応したテストコードではなく、あくまでも契約を記述可能な部分だけが作成されることにご注意ください。(拡張子 .g.cs ではなくて、.cs だけが作成される)

4.IntelliTest テストケースの作成

テスト対象のコンテキストメニューから [Run IntelliTest] でテストケースの作成および各テストケースを実行するテストコードを作成します。作成されたテストコードの一部を抜粋します。

using Microsoft.Pex.Framework.Generated;
using NUnit.Framework;
using Microsoft.Pex.Framework;
using ClassLibrary1;
// <copyright file="Class1Test.FizzBuzzTest.g.cs" company="Microsoft Corporation">Copyright © Microsoft Corporation 2015</copyright>
// <auto-generated>
// This file contains automatically generated tests.
// Do not modify this file manually.
// 
// If the contents of this file becomes outdated, you can delete it.
// For example, if it no longer compiles.
// </auto-generated>
using System;

namespace ClassLibrary1.Tests
{
    public partial class Class1Test
    {

[Test]
[PexGeneratedBy(typeof(Class1Test))]
public void FizzBuzzTest533()
{
    string s;
    Class1 s0 = new Class1();
    s = this.FizzBuzzTest(s0, 0);
    PexAssert.AreEqual<string>("FizzBuzz", s);
    PexAssert.IsNotNull((object)s0);
}

// 以下略

テストメソッドNUnitTest 属性が付いてますし、冒頭に NUnit.Framework 名前空間も using されていますね。

Create IntelliTest ウインドウについて

コンテキストメニューに [Create IntelliTest] という項目が増えていますが、これは Test Generator NUnit extenstion によって追加された訳ではなく、 RTM で標準機能として追加されたようですね。

f:id:kendik:20150722195227p:plain

  • Test Framework
    • 対象のテスティングフレームワークを選択します
    • 初期状態だと MSTest しかありませんが、 VS 拡張をインストールすることで選択肢が増えます
  • Test Project
    • テストプロジェクトを選択します
    • 新しく作ることも出来ますし、既存の IntelliTest テストプロジェクトに追加することもできます
      • どうやって区別してるのか分かりませんが、自分で作ったテストプロジェクトには追加できません
  • Name Format for Test Project
    • テストプロジェクト名を指定します
    • [Project] というプレースホルダを使うと、自動でテスト対象のプロジェクト名に置換してくれます
    • もちろん名前をべた書きでも OK です
  • Namespace
    • テストクラスの名前空間を指定します
    • [Namespace] というプレースホルダを使うと、自動でテスト対象のプロジェクト名に置換してくれます
    • べた書きでも OK
  • Name Format for Test Class
    • テストクラスの名前を指定します
    • [Class] という以下略
  • Name Format for Test Method
    • テストメソッドの名前を指定します
    • [Method] 以下略
    • ここでテストメソッド名を指定しても、メソッド名の末尾に連番が付くのは避けられないようです

Test Generator NUnit extenstion について

Create IntelliTest ウインドウの [Test Framework] に NUnit と NUnit2 が追加されます。前者は現在開発中である NUnit 3.0 が、後者は最新安定版である NUnit 2.6.4 がインストールされます。3 系と 2 系がインストールされると覚えておけばいいです。

また、自動生成されたテストをテストエクスプローラに表示するには NUnit 2 系ではテストプロジェクトに NuGet から NUnitTestAdapter を、 NUnit 3 系では 現在のところ VS 拡張である NUnit3 Test Adapter のインストールが必要です。 NUnit 3 系でも NuGet からのインストールに対応しようとはしているようなので、気長に待ちましょう。

xUnit.net Test Extensions について

簡単にしか試していませんが、 NUnit の場合と同じようにできます。