Quindi non sto facendo test di unità. Ma ho avuto l'idea di renderlo più appropriato per il mio campo di utilizzo. Tuttavia non è chiaro se esista qualcosa del genere, e se, come potrebbe essere chiamato.
I test di unità ordinaria combinano la logica di test e il risultato atteso. In sostanza, il framework di testing controlla solo i booleani (ha fatto questa corrispondenza, ha fatto il risultato del risultato atteso). Per generalizzare, il codice di test stesso fa riferimento alle funzioni controllate e inoltre esplicita i valori del risultato in questo modo:
unit::assert( test_me() == 17 )
Quello che sto cercando è una separazione delle preoccupazioni. Il test stesso dovrebbe contenere solo la logica testata. I dati sui risultati e sui risultati dovrebbero essere gestiti dal test unitario o dal quadro di asserzione. Ad esempio:
unit::probe( test_me() )
Qui probe
raddoppia effettivamente come collector nella prima esecuzione e in seguito come metodo di verifica. L'atteso 17
non è menzionato nel codice di test, ma memorizzato o gestito altrove.
Come si chiama questo schema? O come lo chiameresti? Spero di poter trovare alcune implementazioni effettive con la terminologia corretta.
Ovviamente un tale schema non è adatto per TDD. È strettamente per i test di regressione. Inoltre, ovviamente, non può essere utilizzato per tutti i casi. Solo i soggetti di prova più semplici possono essere analizzati in questo modo, per qualsiasi altra cosa sono richiesti i normali passaggi di prova e di asserzione dell'unità. E sì, questo potrebbe essere realizzato manualmente creando un ResultWhateverObject, ma ciò richiederebbe ancora il cablaggio alla logica di test.
Inoltre, tieni presente che sto cercando informazioni sui linguaggi di scripting e non su Java. Sono consapevole che il pattern xUnit ha origine lì e perché è così elaborato come è.
A proposito, ho scoperto un framework di esecuzione di test che consente di abbreviare le semplici notazioni di test a:
test_me(); // 17
Anche se in questo modo i dati dei risultati non sono più codificati (è un commento), non è ancora una separazione completa e, naturalmente, funzionerebbe solo per risultati scalari.