Sto cercando di capire alcune best practice quando si tratta di BDD
e Cucumber
. Solo di recente ho iniziato a usarlo,
e la prima caratteristica per cui ho scritto un test sta testando una funzione di ricerca, in particolare come un livello Repository
si integra con un% co_de JPA che è stato iniettato usando l'annotazione EntityManager
. Lo fa da
creando un EJBContainer usando la dipendenza di Maven incorporata GlassFish e inizializzando il livello di persistenza in questo modo.
Funziona quindi sono abbastanza soddisfatto.
Ora sono nella fase in cui voglio iniziare a utilizzare Selenium con Cucumber per testare la funzione di ricerca della pagina JSF. Quale Presumo che sarò in grado di controllare il contenuto di una tabella HTML dopo che la ricerca è stata inviata.
È possibile utilizzare lo stesso file di funzionalità con una classe di passaggi diversi che esegue il test del selenio? È una buona pratica? Al momento nessuna di queste cose di Cucumber sembra un test unitario, sembra tutto un test di integrazione!
Quello che ho in mente è qualcosa come la seguente organizzazione
test
|
java
| |
| feature
| |
| web
| | |
| | user
| | UserSearchWebSteps
| | UserAddWebSteps
| | UserDeleteWebSteps
| | UserWebTest
| db
| |
| user
| UserSearchDBSteps
| UserAddDBSteps
| UserDeleteDBSteps
| UserDBTest
resources
|
feature
|
user
search_users.feature
add_user.feature
delete_user.feature
Quindi i passaggi sarebbero organizzati a livello di web o db, e quindi in questo esempio ogni passo dell'utente è sotto quello. Con una corrispondente classe di test per corridori che esegue tutti questi passaggi
E poiché i livelli web e db si aspettano gli stessi risultati, avrei condiviso i file delle funzionalità.
L'UserXXXTest dovrebbe quindi specificare nelle sue opzioni cetriolo dove trovare il file di funzionalità e perché i passaggi per il web e db sono separati a livello di pacakge avendo un metodo step con la stessa regexp non dovrebbe essere un problema.
@RunWith(Cucumber.class)
@CucumberOptions(features =
{
"src/test/resources/feature/user"
})
public class UserDBTest
{
}