Turn off UIFigure visibility during unit test

31 views (last 30 days)
Rich006
Rich006 on 8 Oct 2025 at 13:25
Answered: Adam Danz on 13 Oct 2025 at 17:29
How can I run unit tests on an app without displaying the UIFigure during the tests? Rendering the graphics makes the tests take 10 times longer.
classdef UI < matlab.apps.AppBase
...
end
classdef tUI < matlab.uitest.TestCase
...
% many tests involving UI gestures
...
end

Accepted Answer

Adam Danz
Adam Danz on 13 Oct 2025 at 17:29
Interaction tests using press, drag, etc, require figure visibility to be on in the App Testing Framework.
Make sure you're not unnecessarily creating/destroying the uifigure repeatedly between tests. In most cases, the figure/app only needs to be generated once during TestClassSetup and removed via a teardown. Reducinge the figure size may also help with performance.

More Answers (1)

Anjaneyulu Bairi
Anjaneyulu Bairi on 13 Oct 2025 at 9:20
Hi,
In your code, you can create a function which turn on/off the visibilty of the figures. See the below code for example
function app = TurnOff(fig)
fig.Visible = 'off';
end
This way, you can show or hide any figure by changing its Visible property.
Hope this helps
  1 Comment
Rich006
Rich006 on 13 Oct 2025 at 11:49
Edited: Rich006 on 13 Oct 2025 at 11:50
I think there is no way to do what I want to do, which is to turn off visibility during unit testing with gestures. If I make the UIFigure invisible as you suggest, I get the following error. It looks like the unit testing gestures require the UIFigure to be visible.
Error ID:
---------
'MATLAB:uiautomation:Driver:VisibleHierarchy'
--------------
Error Details:
--------------
Error using matlab.ui.internal.Driver/type
The component must have a visible hierarchy.
Error in matlab.uitest.internal.GestureProvider/type (line 181)
testCase.Driver.type(H, text, varargin{:});

Sign in to comment.

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!