gpt4 book ai didi

java - 在 Eclipse 中混合 scala、maven 和 java - 单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:46 27 4
gpt4 key购买 nike

我有一个 java maven 项目,我想用 scala 进行单元测试。但是我怎么能在一个 Eclipse 项目中混合 java 和 scala 代码,因为 java 和 scala 使用它们自己的编译器。由于这个 scala 代码不会在 Eclipse 中编译,因为 java 编译器需要 java 语法。

目前我的项目是基于 Eclipse 的,它们是基于 java 的项目。它们是否需要转换为不同的项目类型,例如 Scala?

最佳答案

如果您只想从 Scala 测试 Java 代码,那么设置这样一个 Maven 项目非常容易。由于我不是 eclipse 用户,所以我不确定它如何与 eclipse 一起使用。我已经使用 IntelliJ 进行了测试,它运行良好。 eclipse 也不应该有任何问题。

我创建了一个简单的 pom.xml,它只使用 scala 编译器进行测试,并使用普通的 java 编译器来编写主要的 java 代码。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.stackoverflow.Q13379591</groupId>
<artifactId>Q13379591</artifactId>
<version>1.0-SNAPSHOT</version>

<name>${project.artifactId}-${project.version}</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<scala.version>2.9.2</scala.version>
</properties>

<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_${scala.version}</artifactId>
<version>2.0.M4</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<id>scala-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<args>
<arg>-g:vars</arg>
<arg>-make:transitive</arg>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>1.0-M2</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
<stdout>W</stdout> <!-- Skip coloring output -->
</configuration>
<executions>
<execution>
<id>scala-test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

现在这是我要测试的一个简单的 Java 类:

src/main/java/com/stackoverflow/Hello.java

package com.stackoverflow;

/**
* @author maba, 2012-11-14
*/
public interface Hello {
String hello();
}

src/main/java/com/stackoverflow/HelloJava.java

package com.stackoverflow;

/**
* @author maba, 2012-11-14
*/
public class HelloJava implements Hello {

public String hello() {
return "Hello Java";
}
}

最后是 ScalaTest 测试类。

src/test/scala/com/stackoverflow/HelloJavaTest.scala

package com.stackoverflow

import org.scalatest.FlatSpec

/**
* @author maba, 2012-11-14
*/
class HelloJavaTest extends FlatSpec {
"HelloJava" should "be instance of Hello" in {
val hello = new HelloJava
val result = hello match {
case f:Hello => true
}
assert(result)
}

it should "say Hello Java" in {
val helloJava = new HelloJava
assert(helloJava.hello === "Hello Java")
}
}

您现在可以使用此命令运行它:

mvn test

我可以在 IntelliJ 中右键单击测试用例并运行测试。在 eclipse 中应该也可以。

关于java - 在 Eclipse 中混合 scala、maven 和 java - 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13379591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com