首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有测试框架的情况下使用嵌入式-cassandra

如何在没有测试框架的情况下使用嵌入式-cassandra
EN

Stack Overflow用户
提问于 2019-05-17 07:25:01
回答 1查看 559关注 0票数 0

我有一个play/scala应用程序,并使用cassandra数据库。我读过关于embedded-cassandra的文章,并试图使用它。我的应用程序不使用像junit这样的测试框架(如果可能的话,我宁愿不使用它们来避免)。

到目前为止,我已经创建了一个工厂和一个cqlstatement。但我不知道怎么执行这条语句。提到wiki,它指的是TestCassandra,但是我的IDE找不到这个类。我需要使用TestNG还是Junit4

代码语言:javascript
复制
class UsersRepositorySpecs extends PlaySpec /*with BeforeAndAfterAll with BeforeAndAfterEach with OneAppPerSuiteWithComponents*/{
  "UsersRepository Specs" should {
    "create keyspace" in {
      val factory = new LocalCassandraFactory
      println(s"factory is ${factory}")
      factory.setVersion(("3.11.1")) 
      val statement = new CqlStatements(
        """
          |CREATE KEYSPACE myspace
          |  WITH REPLICATION = {
          |   'class' : 'SimpleStrategy',
          |   'replication_factor' : 1
          |  };
        """.stripMargin)

      val cassandra = factory.create
      try {
        cassandra.start()
        val settings = cassandra.getSettings
        println(s"settings are ${settings}")
//HOW DO I EXECUTE THE STATEMENT ?
      } finally cassandra.stop()

    }
  }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-17 08:14:11

您使用的是com.github.nosan:embedded-cassandra-test还是com.github.nosan:embedded-cassandra?你应该用第一个。

libraryDependencies += "com.github.nosan" % "embedded-cassandra-test" % "2.0.1" % Test

com.github.nosan:embedded-cassandra-test模块包含TestCassandra类。

代码语言:javascript
复制
LocalCassandraFactory cassandraFactory = new LocalCassandraFactory();
        cassandraFactory.setVersion("3.11.1");

        TestCassandra testCassandra = new TestCassandra(cassandraFactory, CqlScript.statements("raw-statements"),
                CqlScript.classpath("file scripts"));

        try {
            testCassandra.start();

            //your tests
        }
        finally {
            testCassandra.stop();
        }

如果TestCassandra类仍然有问题,可以使用以下示例:

代码语言:javascript
复制
        LocalCassandraFactory cassandraFactory = new LocalCassandraFactory();
        cassandraFactory.setVersion("3.11.1");
        Cassandra cassandra = cassandraFactory.create();
        try {

            cassandra.start();

            Settings settings = cassandra.getSettings();

            //com.datastax.cassandra:cassandra-driver-core:3.7.1
            SocketOptions socketOptions = new SocketOptions();
            socketOptions.setConnectTimeoutMillis(30000);
            socketOptions.setReadTimeoutMillis(30000);
            try (Cluster cluster = Cluster.builder()
                    .addContactPoints(settings.getAddress())
                    .withPort(settings.getPort())
                    .withSocketOptions(socketOptions)
                    .withoutJMXReporting()
                    .withoutMetrics()
                    .build()) {
                Session session = cluster.connect();
                List<String> statements = CqlScript.classpath("schema.cql").getStatements();
                statements.forEach(session::execute);
            }

            //com.datastax.oss:java-driver-core:4.0.1

            DriverConfigLoader driverConfigLoader = DriverConfigLoader.programmaticBuilder()
                    .withDuration(DefaultDriverOption.REQUEST_TIMEOUT, Duration.ofSeconds(30))
                    .withDuration(DefaultDriverOption.CONNECTION_INIT_QUERY_TIMEOUT, Duration.ofSeconds(3))
                    .build();

            try (CqlSession cqlSession = CqlSession.builder().addContactPoint(
                    new InetSocketAddress(settings.getAddress(), settings.getPort()))
                    .withLocalDatacenter("datacenter1")
                    .withConfigLoader(driverConfigLoader)
                    .build()) {

                List<String> statements = CqlScript.classpath("schema.cql").getStatements();
                statements.forEach(cqlSession::execute);
            }

        }
        finally {
            cassandra.stop();
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56181569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档