Прежде всего, я вижу, что вы используете JUnit 5 в фрагменте кода, но, похоже, есть некоторые проблемы, связанные с. используя JUnit 5 со Scala и sbt: https://github.com/sbt/junit-interface/issues/75. Альтернативы включают использование JUnit 4 или одной из специфичных для Scala библиотек тестов, таких как ScalaTest или specs2 (ScalaCheck также стоит упомянуть, хотя я обычно использовал его только в сочетании со ScalaTest или specs2).
Во-вторых, я не знаю, какой инструмент сборки вы используете, и есть ли в нем все соответствующие зависимости, которые могут быть причиной ошибок компиляции. Если вы используете sbt (https://www.scala -sbt.org / ), который, как я считаю, является наиболее распространенным инструментом сборки при разработке с использованием Scala, один из возможных примеров того, как он может выглядеть в вашем примере, таков: используя JUnit 4):
build.sbt:
import Dependencies._
ThisBuild / scalaVersion := "2.12.8"
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"
ThisBuild / organizationName := "example"
lazy val root = (project in file("."))
.settings(
name := "quilltesting",
libraryDependencies ++= Seq(
"mysql" % "mysql-connector-java" % "8.0.15",
"io.getquill" %% "quill-jdbc" % "3.1.0",
"io.getquill" %% "quill-async-mysql" % "3.1.0",
// JUnit 4.
"com.novocode" % "junit-interface" % "0.11" % Test
)
)
Чтобы создать быстрый проект с нуля для тестирования с использованием sbt, создайте новую папку где-нибудь, перейдите в нее из командной строки и запустите sbt new sbt/scala-seed.g8
. Затем перейдите в папку и запустите sbt
. После этого запустите test
.
Я изменил ваш пример на использование JUnit 4, и, похоже, он компилируется и запускается:
package dbquerytest
import io.getquill._
/*in a real life you would rather pass execution context as
a method or constructor argument, but we're just playing*/
import scala.concurrent.ExecutionContext.Implicits.global
import org.junit.Test
import junit.framework.TestCase
import org.junit.Assert._
case class Intake( id:Int, path:String, stage:Int)
// running/using junit test:https://alvinalexander.com/scala/how-to-use-junit-testing-with-scala
class MysqlLocalDbTest {
@Test
def testIntake = {
val ctx = new MysqlAsyncContext(SnakeCase, "testdb")
import ctx._
val intakes = quote { query[Intake].map(_.id )}
ctx.run(intakes).map(_.headOption)
assertEquals(0,0)
}
}
Если вы хотите попробовать другие примеры, есть также https://scastie.scala -lang.org / QwOewNEiR3mFlKIM7v900A , как указано в https://getquill.io/#quotation-introduction.