Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Auszug
hiddentrue

Nuclos Business-Test API: BusinessTestScript, attempt, fail, withUser, Entitätsklasse, save, Groovy, assert.

globe with meridians Sprache: Deutsch · English

open book API

Die Skript-API der Business-Tests – BusinessTestScript-Methoden und generierte Entitätsklassen.

Status
colourGrey
titleReferenz
Status
colourBlue
titleEntwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2

...

minLevel2

Jedes Businesstest-Skript

...

leitet automatisch von

...

org.nuclos.server.businesstest.execution.BusinessTestScript

...

ab und stellt u.​a. folgende Methoden bereit.

Methoden

MethodeZweck
void attempt(Callable c)

...

führt das

...

Callable

...

aus und fängt

...

Exceptions ab

...

; erhöht ggf.

...

den Fehler

...

-/Warnungs-Zähler

...

, ohne das Skript abzubrechen.
void fail(String message)

...

lässt den Test fehlschlagen

...

(nur in Ausnahmefällen

...

– meist sind Assertions besser).
<T> T withUser(String user, Callable<T> c)

...

führt das

...

Callable als

...

Beispiel:

...

languagegroovy

...

angegebener Benutzer aus (mit dessen Rechten) und liefert dessen Rückgabewert.

Entitätsklassen

Für jedes

...

BO wird eine

...

Entitätsklasse generiert, über die auf die Attribute

...

zugegriffen

...

wird und die

...

Hilfsmethoden

...

(Getter

...

Analog zur Serverregel-API: Für jedes Attribut eines BOs gibt es einen Getter und Setter. Für Referenz-Attribute zusätzlich einen Getter und Setter für die ID.
In Groovy können diese Methoden wie einfache Properties benutzt werden.

Beispiel:

Codeblock
languagegroovy
Order order = new Order()
order.orderNumber = 10020149
println order.orderNumber

get(Long id) - Datensatz über die ID holen

Statische Methode der Entitätsklasse - entspricht QueryProvider.getById() der Serverregel-API.

Beispiel:

Codeblock
languagegroovy
Order order = Order.get(12345)

save() - Datensatz speichern

Speichert den aktuellen Datensatz - entspricht BusinessObjectProvider.insert() oder BusinessObjectProvider.update(), je nachdem ob der Datensatz neu ist.
Eine manuelle Unterscheidung ist hier nicht mehr nötig.

Beispiel:

Codeblock
languagegroovy
Order order = new Order()
order.orderNumber = 10020149
order.save()
order.orderNumber++
order.save()

delete() - Datensatz löschen

Löscht den aktuellen Datensatz - entspricht BusinessObjectProvider.delete().
Der Datensatz muss hierfür bereits gespeichert gewesen sein.

...

/Setter, save() …) bereitstellt.

Codeblock
languagegroovy
withUser('test') {
    Order order = new Order(orderNumber: 123).save()
    assert order.createdBy == 'test'
}

Verwandte Seiten

gear Business-Tests


Übersicht.

Öffnen →

gear Bedienung


Bedienung.

Öffnen →

 Order.get(12345).delete()

first() - Ersten Datensatz holen

Holt den ersten Datensatz dieses BOs, den die Datenbank liefert (ohne bestimmte Reihenfolge).
Wird vor allem in den automatisch generierten Tests verwendet, wenn keine sinnvolleren Suchkriterien zur Verfügung stehen.

Beispiel:

Codeblock
languagegroovy
Order order = Order.first()

list(int limit) - Mehrere Datensätze holen

Analog zu first(), jedoch werden gleich mehrere Datensätze geholt. limit ist optional - falls nicht angegeben, ist der Default-Wert 100.

Beispiel:

Codeblock
languagegroovy
List<Order> orders = Order.list(10)

query(String where) - Komplexe SQL-ähnliche Abfragen

Hierüber können komplexe Suchen durchgeführt werden. Der Parameter muss ein Query-String sein, wie ihn auch der REST-Service akzeptiert (siehe dazu Dokumentation des "where" Parameters unter: 4. Businessobjekte (BO) lesen).

Beispiel:

Codeblock
languagegroovy
List<Order> orders = Order.query('''
    example_rest_Order_customer = 40000294
AND example_rest_Order_orderDate >= '2014-06-05'
AND example_rest_Order.id IN (
        SELECT example_rest_OrderPosition_order 
        FROM example_rest_OrderPosition
        WHERE example_rest_OrderPosition_price > 800
    )
''')

Dependents (Subform-Datensätze)

Wenn ein BO von anderen BOs referenziert wird, wird für jede dieser Referenzen eine Methode der Form get<ReferenzBO>By<Attributname>() auf dem referenzierten BO generiert. Diese Methode liefert eine Collection der Dependents, welcher auch neue Datensätze hinzugefügt werden können.

Beispiel:

Codeblock
languagegroovy
titleHinzufügen und Löschen eines Subform-Datensatzes
Customer bo = new Customer()
bo.customerNumber = 123
bo.name = 'Customer 123'
bo.active = true

// Add dependent
bo.getCustomerAddressByCustomer().add(new CustomerAddress(
      street: 'Street 1',
      city: 'Munich',
      zipCode: '12345'
))

bo.save()

assert bo.getCustomerAddressByCustomer().size() == 1

// Delete first dependent
bo.getCustomerAddressByCustomer().remove(
      bo.getCustomerAddressByCustomer().first()
)

bo.save()

assert bo.getCustomerAddressByCustomer().empty

BOs mit Statusmodell

Falls das BO ein Statusmodell hat:

changeStat(int state) - Statuswechsel

Wechselt in den angegebenen Zielstatus - entspricht StatemodelProvider.changeState().

Beispiel:

Codeblock
languagegroovy
Order.get(12345).changeState(80)

BOs mit Benutzerregeln

Falls dem BOs Benutzerregeln (CustomRules) zugewiesen sind, steht für jede Regel eine Methode der Form execute<Regel-Name>() zur Verfügung.

Beispiel (Order hat die CustomRule "LockOrder"):

Codeblock
languagegroovy
Order.get(12345).executeLockOrder()

BOs mit "Aktionen"

Falls dem BOs "Aktionen" (aka NuclosProcess) zugewiesen sind, steht für jede Aktion eine Methode der Form changeProcess<Aktionsname>() zur Verfügung. Zusätzlich gibt es eine Method unsetProcess(), um die Aktion zu entfernen.

Beispiel (Order hat die Aktion "Priority order"):

Codeblock
languagegroovy
Order.get(12345).changeProcessPriorityorder()