1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Revit Test Frameworkを使ったRevitアドインのテスト

Last updated at Posted at 2020-05-04

#Revit Test Framework (RTF)とは
AutodeskのDynamo開発チームが提供するRevitAPIのテスト機能。Revitのモデルを指定してテストができ、コマンドラインとGUIが提供されています。
Dynamoだけではなく、Revitアドインのテストにも活用できるということなので使ってみました。

#NuGetでパッケージをインストール
NuGetで下記のパッケージをテストプロジェクトにインストールしましょう。

  • RevitTestFramework
  • NUnit

#テストクラスを書く
例えば、ドアインスタンスを取得するメソッドをテストする場合、ドアの取得数をテストする時、5個のドアを入力したRevitデータ(5doors.rvt)を用意します。

DoorUtility.cs
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;
        }
    }
}
DoorUtilityTest.cs
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の起動が繰り返しあるととにかく遅いです。

#参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?