È possibile accedere al nome del test attualmente in esecuzione, all'interno di un test ScalaTest? (E come dovrei farlo?)Accedere al nome del test ScalaTest dal test interno?
Background:
sto testando che la mia Data Access Object alla fine genera un OverQuotaException
se un utente ad esempio crea troppe pagine. Questi test richiedono piuttosto tempo per essere eseguiti. Per sentirmi più felice, mi piacerebbe stampare i progressi sullo stdout - e poiché ci sono molti test, mi piacerebbe includere il nome del test nell'output, quindi so quale test è attualmente in esecuzione.
(non ho trovato alcuna funzione apparentemente rilevanti qui: http://www.artima.com/docs-scalatest-2.0.M5/#org.scalatest.FreeSpec)
Esempio:
"QuotaCharger can" - {
"charge and decline quota consumers" - {
"charge a per site IP number (guest user)" in {
// ... Here, a guest user post very many comments until it's over quota.
// This takes a little while, and there are many similar tests.
// ---> Here <--- I'd like to access the string:
// "charge a per site IP number (guest user)",
// is that possible somehow?
}
Penso di preferire l'approccio 'def currentTestName: String' in realtà, che puoi accedere da qualsiasi luogo senza passare alcun parametro (e modificando le firme delle funzioni solo a scopo di debug). Dal mio punto di vista, il nome del test non fa realmente parte del test: si tratta solo di informazioni di debug. Ma quando appare come un parametro del test ('td =>') allora sembra che faccia parte del test. – KajMagnus
Cosa succede se il test richiede un parametro di fissaggio "reale"? Quindi o avresti bisogno di accettare 2 parametri per ogni test? '" nome test "in {case (td, realTestData) => ...}'. O forse non sarebbe possibile passare anche 'realTestData' al test? Perché il solo parametro passato al test sarebbe quello che ha fornito il nome del test (a scopo di debug). – KajMagnus
Bene, tieni presente che currentTestName funziona solo se i test vengono eseguiti in sequenza, il che sarà vero a meno che non si mischi in ParallelTestExecution. In tal caso, puoi semplicemente impostare una var in withFixture in FreeSpec regolare. Se i test vengono eseguiti in modo sequenziale, anche l'approccio hat funzionerà e sembrerà meno invadente se questo è solo per il debugging temporaneo. Supponevo che sarebbe stato lì per sempre. –