#Revit Test Framework (RTF)とは
AutodeskのDynamo開発チームが提供するRevitAPIのテスト機能。Revitのモデルを指定してテストができ、コマンドラインとGUIが提供されています。
Dynamoだけではなく、Revitアドインのテストにも活用できるということなので使ってみました。
#NuGetでパッケージをインストール
NuGetで下記のパッケージをテストプロジェクトにインストールしましょう。
- RevitTestFramework
- NUnit
#テストクラスを書く
例えば、ドアインスタンスを取得するメソッドをテストする場合、ドアの取得数をテストする時、5個のドアを入力したRevitデータ(5doors.rvt)を用意します。
using Autodesk.Revit.DB;
using System.Collections.Generic;
namespace FamilyUtility
{
public class DoorUtility
{
public static IList<Element> GetDoorInstance(Document doc)
{
var doors = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).OfClass(Typeof(FamilyInstance)).ToElements();
return doors;
}
}
}
using FamilyUtility;
using NUnit.Framework;
using RTF.Applications;
using RTF.Framework;
namespace FamilyUtilityTest
{
[TestFixture]
public class DoorUtilityTest
{
[SetUp]
public void Setup() {}
[TearDown]
public void ShutDown() {}
[Test, Category("Door")]
[TestModel(@".\5doors.rvt")]
public void DoorInstanceCountTest()
{
var doc = RevitTestExecutive.CommandData.Application.ActiveUIDocument.Document;
var doors = DoorUtility.GetDoorInstance(doc);
Assert.IsNotNull(doors);
Assert.IsTrue(doors.Count == 5);
}
}
}
指定するデータはワイルドカード[TestModel(@".\*.rvt")]
でも指定できます。
#GUIでテストを実行
NuGetで取得した RevitTestFrameworkGUI.exe を起動しテストを行います。
- File: 下記の設定をファイルに保存できます。
- Test Assembly: テストクラスを持つアセンブリを指定します。
- Results File Path: 結果出力ファイルを指定します。
- Working Directory: 作業フォルダを指定します。テストデータのカレントになります。
- Run: テストを開始します。自動でRevitが起動し、テストデータもロードされます。
#注意点
指定するテストデータはテストするRevitバージョンで保存しておきましょう。
例えばRevit 2019でテストする場合のテストデータは、Revit 2019で保存したデータでないとダメなようです。
#おわりに
うまく使えば品質管理が効率的に行えると思います。
Revitの起動が繰り返しあるととにかく遅いです。
#参考