testing - run - junit intellij
Ejecución de métodos de prueba ScalaTest individuales en IntelliJ IDEA (4)
Puede generar una configuración de ejecución para una prueba específica de Flatspec colocando el cursor en la prueba, y desde el menú Ejecutar, seleccione Run...
(opción + Shift + F10 en mac), y cerca de la parte superior habrá una entrada para el específico prueba.
Puede generar manualmente la configuración de ejecución seleccionando su clase de prueba como normal, luego copiando en el nombre de prueba (El "foo" en "foo" should "bar" in...
) en el campo Test Name
Es posible ejecutar un único método de prueba JUnit seleccionado en IntelliJ IDEA 12, sin embargo, esto no parece posible con ScalaTest. Puede ejecutar toda la clase de prueba o nada, pero parece que no hay un control detallado para ScalaTest (todavía) en IntelliJ IDEA 12. (Todavía no he probado IDEA 13).
Entonces, la pregunta: ¿Hay alguna forma de ejecutar solo un único método de prueba ScalaTest en IntelliJ (como es posible con los métodos de prueba de JUnit)?
A continuación se muestra un ejemplo de código cuyos métodos de prueba me gustaría ejecutar individualmente en IntelliJ. ¿Alguna idea de cómo hacerlo?
Intenté con JUnitRunner, pero eso no ayudó.
class NodeDAOTest extends FlatSpec with SessionAware with BeforeAndAfter {
before{ IM3_SessionFactory.removeData
println("before is running")}
println("NodeDAOTest constructor.")
def numberOfNodes=initAndCloseDB(transaction{NodeDAO.numberOfNodes})
"Node" can "be added to DB and removed." in {
val n =new TextNode
assert(numberOfNodes===0)
initAndCloseDB { transaction{session save n}}
assert(numberOfNodes===1)
initAndCloseDB { transaction{deleteNode(n)}}
assert(numberOfNodes===0)
}
def getTag= initAndCloseDB {transaction{ session.createQuery("from Tag").list().get(0).asInstanceOf[Tag]}}
def getNode=initAndCloseDB {transaction{ session.createQuery("from Node").list().get(0).asInstanceOf[Node]} }
it can "be tagged and untagged" in {
val t=new Tag
val n=new TextNode
assert(numberOfNodes==0,"before adding one tag (and Node), there should be 0 Node in the DB")
initAndCloseDB{ transaction {addTag(t,n) }}
assert (getNode.getNumberOfTags===1)
assert (getTag.getNodes.size===1)
initAndCloseDB(transaction{removeTag(t,n)})
assert (numberOfNodes==1,"after removing the tag, there should be 1 Node in the DB")
assert (getNode.getNumberOfTags===0)
assert (getTag.getNodes.size===0)
}
"Tagged Node" can "be removed." in {
val f=new TagAndNodeFixture
assert(numberOfNodes==1)
initAndCloseDB{ transaction {addTag(f.t,f.n) }}
initAndCloseDB { transaction{deleteNode (f.n)} }
assert(numberOfNodes==0)
// the tag will be removed from the node
}
"Tag" can "be deleted and that will be removed from in-memory Nodes" in{
}
}
Un comentario sobre lo anterior: di que este es tu conjunto de prueba:
"A calendar" should {
"not have any availability" in {...}
}
o
"A calendar" when {
"empty" should {
"not have any availability" in {... }
}
}
Si hace clic derecho en la segunda (o tercera) línea (o utiliza los accesos directos en otras respuestas: Alt Shift F10 u opción + Shift + F10 en mac) IntelliJ le dará una opción para crear una configuración de inicio "Spec.not. .. "que cuando se ejecute dirá" Empty test suite ".
La razón es que el "nombre de prueba" está incorrectamente creado. Edite la configuración de inicio para usar el nombre completo: "Un calendario no debería tener ..." o "Un calendario cuando no debería haber estado vacío ..." y funcionará. Parece ser un problema al analizar el nombre del código.
Yo tuve el mismo problema. Se muestra, si tienes espacio en la primera palabra
"test " should "..."
Cuando eliminé el espacio, la prueba comienza a ejecutarse
Uso IntelliJ IDEA 13 y puedo ejecutar una sola prueba cuando uso FunSuite
: coloco el cursor en una prueba y FunSuite
Alt + Shift + F10 y la prueba está allí. No es posible con FlatSpec
pruebas FlatSpec
.
Se ha agregado recientemente y recuerdo que no funcionaba en la versión 12 incluso para FunSuite
.