Main Content

matlab.unittest.fixtures.TemporaryFolderFixture クラス

名前空間: matlab.unittest.fixtures
スーパークラス: matlab.unittest.fixtures.Fixture

一時フォルダーを作成するフィクスチャ

説明

matlab.unittest.fixtures.TemporaryFolderFixture クラスにより、一時フォルダーを作成するフィクスチャが提供されます。テスト フレームワークでフィクスチャをセットアップすると、フィクスチャによって一時フォルダーが作成されます。フレームワークでフィクスチャを破棄すると、フィクスチャによってフォルダーとその内容が削除されます。フィクスチャは、フォルダーを削除する前に、一時フォルダーで定義されている関数、MEX ファイル、およびクラスをメモリからすべてクリアします。

matlab.unittest.fixtures.TemporaryFolderFixture クラスは handle クラスです。

作成

説明

fixture = matlab.unittest.fixtures.TemporaryFolderFixture は一時フォルダーを作成するフィクスチャを構築します。

fixture = matlab.unittest.fixtures.TemporaryFolderFixture(Name,Value) は、1 つ以上の名前と値の引数を使用して追加のオプションを設定します。たとえば、fixture = matlab.unittest.fixtures.TemporaryFolderFixture("WithSuffix","_FeatureA") は、指定された接尾辞が付いたフォルダー名の一時フォルダーを作成するフィクスチャを構築します。

入力引数

すべて展開する

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

例: fixture = matlab.unittest.fixtures.TemporaryFolderFixture(WithSuffix="_FeatureA")

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: fixture = matlab.unittest.fixtures.TemporaryFolderFixture("WithSuffix","_FeatureA")

テストの失敗後に一時フォルダーとその内容を保持するかどうか。数値または logical 0 (false) または 1 (true) として指定します。失敗には、検証、アサーション、または致命的なアサーションの各エラーと、フィクスチャを使用するテスト内のキャッチされないエラーが含まれます。

既定では、フレームワークでテストの失敗が検出されるとフィクスチャが破棄され、フィクスチャによって一時フォルダーとその内容が削除されます。値を true と指定すると、失敗後に一時フォルダーとその内容がフィクスチャで削除されません。一時フォルダーとその内容を保持すると、失敗した原因のデバッグに役立つことがあります。

この引数は PreserveOnFailure プロパティを設定します。

一時フォルダー名の接尾辞。string スカラーまたは文字ベクトルとして指定します。

この引数は Suffix プロパティを設定します。

プロパティ

すべて展開する

セットアップ時にフィクスチャによって作成された一時フォルダーの絶対パス。文字ベクトルとして返されます。このプロパティは、フレームワークでフィクスチャをセットアップするときにフィクスチャによって設定されます。

属性:

GetAccess
public
SetAccess
private

テストの失敗後に一時フォルダーとその内容を保持するかどうか。logical 0 (false) または 1 (true) として返されます。失敗には、検証、アサーション、または致命的なアサーションの各エラーと、フィクスチャを使用するテスト内のキャッチされないエラーが含まれます。既定では、フレームワークで失敗が検出されるとフィクスチャが破棄され、フィクスチャによって一時フォルダーとその内容が削除されます。

このプロパティは名前と値の引数 PreservingOnFailure によって設定されます。

属性:

GetAccess
public
SetAccess
private

一時フォルダー名の接尾辞。文字ベクトルとして返されます。

このプロパティは名前と値の引数 WithSuffix によって設定されます。

属性:

GetAccess
public
SetAccess
private

すべて折りたたむ

TemporaryFolderFixture インスタンスを使用して、テスト用に一時フォルダーを作成します。

現在のフォルダー内の WritingToFileTest.m という名前のファイルに、WritingToFileTest クラスを作成します。一時フォルダー内のファイルに内容を書き込んだ後にファイルの内容を検証する Test メソッドをクラスで定義します。テスト用の一時フォルダーの作成には TemporaryFolderFixture インスタンスを使用します。

classdef WritingToFileTest < matlab.unittest.TestCase
    methods (Test)
        function testWithTemporaryFolder(testCase)
            import matlab.unittest.fixtures.TemporaryFolderFixture
            fixture = testCase.applyFixture(TemporaryFolderFixture);
            
            file = fullfile(fixture.Folder,"myFile.txt");
            fid = fopen(file,"w");
            testCase.addTeardown(@fclose,fid)
            testCase.assertNotEqual(fid,-1,"IO Problem")
            txt = repmat("ab",1,1000);
            dataToWrite = join(txt);
            fprintf(fid,"%s",dataToWrite);
            testCase.verifyEqual(string(fileread(file)),dataToWrite)
        end
    end
end

テストを実行します。テスト フレームワークでフィクスチャがセットアップされ、一時フォルダーが作成されます。テストが完了すると、フレームワークでフィクスチャが破棄され、一時フォルダーとその内容が削除されます。この例では、テストはパスします。

runtests("WritingToFileTest");
Running WritingToFileTest
.
Done WritingToFileTest
__________

テストの失敗後も存続する一時フォルダーをテスト用に作成します。

現在のフォルダー内の PersistentFolderTest.m という名前のファイルに、PersistentFolderTest クラスを作成します。テスト クラスで TemporaryFolderFixture インスタンスを使用して、テストの失敗後も存続する一時フォルダーを作成します。この例では、説明のためにテストを意図的に失敗させます。

classdef PersistentFolderTest < matlab.unittest.TestCase
    methods (Test)
        function testWithTemporaryFolder(testCase)
            import matlab.unittest.fixtures.TemporaryFolderFixture
            testCase.applyFixture(TemporaryFolderFixture ...
                ("PreservingOnFailure",true,"WithSuffix","_TestData"));

            % Failing test
            act = 3.1416;
            exp = pi;
            testCase.verifyEqual(act,exp)
        end
    end
end

テストを実行します。テストに失敗しますが、一時フォルダーは存続しています。テスト診断に一時フォルダーの絶対パスが含まれています。

runtests("PersistentFolderTest");
Running PersistentFolderTest

================================================================================
Verification failed in PersistentFolderTest/testWithTemporaryFolder.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual        Expected               Error               RelativeError    
            ______    ________________    ____________________    ____________________
                                                                                      
            3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual Value:
       3.141600000000000
    Expected Value:
       3.141592653589793
    ----------------------
    Additional Diagnostic:
    ----------------------
    Temporary folder preserved on failure: C:\Temp\tpa00d0db0_45f0_4b3f_9ce9_3323db8df9de_TestData
    ------------------
    Stack Information:
    ------------------
    In C:\work\PersistentFolderTest.m (PersistentFolderTest.testWithTemporaryFolder) at 11
================================================================================

[Terse] Diagnostic logged (2022-10-04 09:23:49):
Because of a failure in the test using the TemporaryFolderFixture, the following folder will not be deleted:
C:\Temp\tpa00d0db0_45f0_4b3f_9ce9_3323db8df9de_TestData
.
Done PersistentFolderTest
__________

Failure Summary:

     Name                                          Failed  Incomplete  Reason(s)
    ===========================================================================================
     PersistentFolderTest/testWithTemporaryFolder    X                 Failed by verification.

ヒント

  • TemporaryFolderFixture クラスを使用する代わりに、createTemporaryFolder メソッドを使用してテスト用の一時フォルダーを作成できます。ただし、TemporaryFolderFixture クラスを使用して一時フォルダーを作成する場合の方が多くの機能を利用できます。

  • TemporaryFolderFixture クラスと WorkingFolderFixture クラスでは、どちらも一時フォルダーを作成するフィクスチャが作成されます。ただし、WorkingFolderFixture で作成されたフィクスチャでは、その一時フォルダーが現在のフォルダーとしても設定されます。

バージョン履歴

R2013b で導入