Sha*_*mal 4 java scala scalatest
可以在 Java 测试文件中使用 ScalaTest,如果可以,我在哪里可以找到示例?
当我尝试类似的事情时:
// MyUTest.java
import org.scalatest.flatspec.AnyFlatSpec;
import org.scalatest.matchers.should.Matchers;
public class MyUTest extends AnyFlatSpec, Matchers {
...
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,equal(Object)在Matchers与同一方法的冲突matchers.dsl.MatherWords
TL;DR:你不能做你正在尝试的事情。
如在 Java中使用具有已实现方法的 Scala 特征所述:
从 Java 的角度来说,Trait.scala 被编译成 Trait 接口。因此,在 Java 中实现 Trait 被解释为实现一个接口 - 这使您的错误消息显而易见。简短回答:您不能利用 Java 中的 trait 实现,因为这将启用 Java 中的多重继承(!)
并且Matchers是一个特质。但是,要克服这个问题,您可以删除Matchers扩展名,并使用测试类:
import org.scalatest.flatspec.AnyFlatSpec;
public class MyUTest extends AnyFlatSpec {
}
Run Code Online (Sandbox Code Playgroud)
哪个会编译。话虽如此,在 Java 中实际使用 ScalaTest 功能真的很困难。例如,一个简单的测试类将是:
public class MyUTest extends AnyFlatSpec {
it should "test1" in { println("test1") }
}
Run Code Online (Sandbox Code Playgroud)
should上面的词在AnyFlatSpecLike处声明,也是trait如此。所以你不能真正使用它。所以我不确定如何克服这个问题,因为这是您可以在ScalaTest 快速入门中找到的非常基本的示例。
经过上面的分析,我认为在Java中使用ScalaTest会非常困难。你可以很容易地做的事情是相反的。如果你已经支持 Scala,并且你有 ScalaTest,你可以在 Scala 中测试 java 代码。它不太“有组织”,因为您希望在 java 文件夹下看到 java 测试类,我们只是证明这是不可能的。我认为拥有这种“混乱”是这种结构中的最佳解决方案。
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |