WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Test Funktion für App

 

elchico
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2022, 23:59     Titel: Test Funktion für App
  Antworten mit Zitat      
Hallo zusammen,

ich würde gern eine TestFunktion für meine App schreiben. In dieser Test Funktion sollen nacheinander verschiedene Callbacks aufgerufen werden und durchgeführt werden mit Dummy-Daten, um zu gewährleisten, dass immer alle Callbacks/Funktionen in meiner App funktionieren.

Da die Testfunktion außerhalb der App programmiert ist, habe ich das über die Maussteuerung per java.awt.Robot und .event gemacht.

Meine Frage ist jetzt: Wie kann ich in der Test Funktion warten, bis der entsprechende Callback bis zum Ende durchgelaufen ist, bevor der nächste Mausclick erfolgt?
Probiert habe ich es über UserData, die zu beginn des Callbacks auf 1 und zum Ende hin auf 0 gesetzt werden. Allerdings funktioniert das nicht. Meine Befürchtung ist, dass das "waitfor" schneller ausgeführt wird als UserData auf 1 gesetzt werden können (s. LoadA001).

Danke und LG
Michi


Test Funktion:

%% Load App
    try
        appExist = app;
    catch
        appExist = 0;
    end
    if appExist == 0
        app = appFileName;
        uiwait; % Das hier ist auch unschön, weil jedes mal eine Figure geöffnet wird ... Vielleicht kann man das auch noch schöner machen?
    end
    app.Name.Units = 'pixels';
    app.tmpParam = 1;
   
    if mousePosition == 1
        % Code for detecting MousePosition
        return;
    end
    fh1 = @mouseMoveClick;

    LoadA001(app,fh1);
 



function LoadA001(app,mouseMoveClickmouseMoveClick)
%% Load a001 data
    disp('Load a001 data');
    app.LoadDataButton.UserData = 0;
    app.filename = "Testdaten.dat";
    app.filename = convertStringsToChars(app.filename);
    app.path = "C:\";
    app.path = convertStringsToChars(app.path); % Das hier ist nötig, da mein Path Apostrophe beinhaltet
    component = app.LoadDataButton;
    mouseMoveClickmouseMoveClick(component,app);
% app.LoadDataButton.UserData wird zu beginn des Callbacks auf 1 gesetzt und zum Ende hin auf 0 -> ich dachte, so warten zu können, bis der Callback durchlaufen wird. Problem ist aber, dass 1) UserData erst nach ein paar CodeZeilen auf 1 gesetzt wird und 2) fünf Codezeilen vor Ende des Callbacks auf 0 zurückgesetzt wird -> das funktioniert nicht
    waitfor(app.LoadDataButton,'UserData',0);
end



function mouseMoveClick(component,app)
%% mouseMoveClick
    import java.awt.Robot;
    import java.awt.event.*;
    mouse = Robot;
    PosApp = app.Name.Position;
    screen = get(0,'ScreenSize');
    PosComponent = component.Position;
    PosMouse = [PosComponent(1)+0.5*PosComponent(3)+PosApp(1), screen(4)-PosComponent(2)-PosApp(2)-0.5*PosComponent(4)];
    mouse.mouseMove(PosMouse(1),PosMouse(2));
    figure(app.Name) % Um die app on top zu holen, falls zwischenzeitlich ein anderes Windows-Fenster geöffnet wurde
    mouse.mousePress(InputEvent.BUTTON1_MASK); % actual left click press
    pause(0.1);
    mouse.mouseRelease(InputEvent.BUTTON1_MASK); % actual left click release
end
 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.03.2022, 21:46     Titel:
  Antworten mit Zitat      
Hallo,

gibt es denn einen Grund, warum du nicht das App Testing Framework nutzt?
https://www.mathworks.com/help/matlab/app-testing-framework.html

Ansonsten: Ich kann zwar nicht nachvollziehen, ob dir das hier weiterhilft, aber drawnow erzwingt diverse Aktualisierungen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2022, 22:38     Titel:
  Antworten mit Zitat      
Hallo Harald,

nein, dafür gibt es keinen Grund. Das kannte ich noch nicht (shame on me - googlen hätte geholfen).

Danke Smile
LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.