Quando si scrivono i test Java per un'applicazione, siano essi test unitari o test di un ambito più ampio, la comunità java tende a modellare proiettori in termini di fabbriche di oggetti che producono dispositivi di uno stato definito.
es:
public class TestFixtureGeneratorA{
static public A modelAState1(){
A a = new A();
a.setFoo(1);
a.setBar("bar");
}
static public A modelAState2(){
A a = new A();
a.setFoo(2);
a.setBar("baz");
}
}
Considerando che, partendo da una prospettiva di metodologie BDD o Agile, sembrerebbe più sensato codificare i dispositivi in termini di scenario applicato e funzionalità o test.
es:
//file: src/test/resources/fixtures/scenarioA/interaction1/A.json
{
foo: 1,
bar: "bar"
}
//file: src/test/resources/fixtures/scenarioA/interaction2/A.json
{
foo: 2,
bar: "baz"
}
//file: src/test/resources/fixtures/scenarioA/interaction2/ids.json
[42, 101, 1337]
Quindi esegui il test nell'esecuzione fornita dall'interazione scenarioA X .
Ho visto questo genere di cose in team agili che modellano dal requisito aziendale al codice (ovvero mantengono uno stack BDD completo), nessuno dei quali negozi java) e una volta in un'applicazione di settore relativamente grande. Ma cercare di cercare la letteratura sulla pratica era infruttuoso. Sembrerebbe esserci un'implementazione a repository GitHub di Corballis che fornisce un'infrastruttura di test basata su annotazioni, simile a quella descritta sopra ma altre che il Web sembra privo di lavoro su questo argomento.
Vista la concisione di JSON e gli aspetti probabilmente migliori della formalizzazione / integrazione della meccanica di fissaggio basata su JSON, come mai non è stato discusso fino ad ora? Ci sono degli apparenti inconvenienti che mi mancano?
Nota: Ciò è tratto dall'esperienza personale in una moltitudine di progetti, principalmente in Java, altamente diversificati (alcuni in cui milioni di SLOC, altri hanno requisiti di performance folle, ecc.)