Unit Test IO triggering

Bonjour,

j’ai créé une classe de test Unitaires Code Serveur (tests unitaires) qui fonctionne très bien quand je la lance depuis l’IHM.

Quelle est la bonne ligne de commande pour démarrer ce test ? Dans la doc je trouve pas d’exemple pour les Objets de type “Server Code”.

Naïvement, j’ai calé le nom de ma classe de test sur le BO que je souhaite tester et la ligne suivante ne fonctionne pas :

curl -s -u designer:simplicite --form service=unittests --form object=NamContratAvenant http://localhost:8080/io

image

La classe mère NamTest n’étend rien en particulier.

Merci d’avance.

Simplicité v5.1.3

Edit : J’ai renommé correctement ma classe de test et maintenant j’ai une erreur :

Ce service I/O ne permet que d’appeler la méthode unittests des objets métier.

Le cas des classes de tests unitaires n’est prévu à ce niveau et il faudrait effectivement que ça soit le cas.

J’ai passé le post en “feature request”

1 Like

Vous avez une fourchette sur un délai de déploiement sur cette feature ? Merci beaucoup en tout cas.

Ce sera fait dans le cadre de la 5.1.5 qui sera livrée ce soir ou au pire demain

La revision 5.1.5 a été livrée (cf. Simplicité® 5/releasenote/releasenote-5.1)

La doc pour l’appel des tests unitaires via le endpoint I/O a été updatée en conséquence: Simplicité® documentation/02-integration/io-commandline => Pour lancer l’execution de tous les tests d’un “shared code” de type “unit tests” il faut appeler /io avec --form service=unittests --form test=<nom du shared code> (c’est le nom de l’attribut qui indique quel type de test unitaire lancer)

Merci pour cette évolution. Par contre j’ai une erreur :

curl -u $SIMPLICITE_USER:$SIMPLICITE_PASSWORD --form service=unittests --form test=NamContratAvenantTests --form service=logs http://simplicite:8080/io

2021-10-01 11:43:46,202|SIMPLICITE|ERROR||http://086d04fbddb5:8080||ECOREDB001|system|com.simplicite.util.engine.ObjectManager|query||Error SQL query: select dbd_path from m_document where row_id=test/src/com/simplicite/tests/name_dev/NamContratAvenantTest.java java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: TEST in statement [select dbd_path from m_document where row_id=test/src/com/simplicite/tests/name_dev/NamContratAvenantTest.java]
[…]
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: TEST at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.ExpressionColumn.checkColumnsResolved(Unknown Source) at org.hsqldb.QueryExpression.resolve(Unknown Source) at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source) at org.hsqldb.ParserCommand.compilePart(Unknown Source) at org.hsqldb.ParserCommand.compileStatement(Unknown Source) at org.hsqldb.Session.compileStatement(Unknown Source) at org.hsqldb.StatementManager.compile(Unknown Source) at org.hsqldb.Session.execute(Unknown Source) ... 79 more

Cette erreur ne me dit rien, quand je teste avec une classe de test (= shared code de type Server code (unit tests) ça me semble bien faire ce qu’il faut:

>  curl -s -u designer:_a_very_strong_password_ "http://127.0.0.1:8080/health?_output=json" | jq -r '.platform.version'
5.1.5

> curl -s -u designer:_a_very_strong_password_ --form service=unittests --form test=AppTest "http://127.0.0.1:8080/io"
Running tests for com.simplicite.tests.Application.AppTest
Elapsed time: 0ms
1 failures / 2 tests
        Failure : test2(com.simplicite.tests.Application.AppTest): expected:<2> but was:<1>
Status: false

AppTest est:

package com.simplicite.tests.Application;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class AppTest {
	@Test
	public void test1() {
		assertEquals(1, 1);
	}

	@Test
	public void test2() {
		assertEquals(2, 1);
	}
}

NB: le résultat est bien le même que via la UI:

A voir ce qui est différent dans votre cas.