可以在java测试文件中使用scalatest,如果可以的话,在哪里可以找到示例?
当我尝试以下方法时:
// MyUTest.java
import org.scalatest.flatspec.AnyFlatSpec;
import org.scalatest.matchers.should.Matchers;
public class MyUTest extends AnyFlatSpec, Matchers {
...
}
我得到一个错误 equal(Object)
在 Matchers
与中的相同方法冲突 matchers.dsl.MatherWords
2条答案
按热度按时间igsr9ssn1#
热释光;医生:你不能做你想做的事。
正如在java中使用scala traits实现方法中所述:
从java的Angular 来看,trait.scala被编译成trait接口。因此,在java中实现trait被解释为实现一个接口——这使错误消息变得明显。简而言之:您不能利用java中的trait实现,因为这将在java中启用多重继承(!)
以及
Matchers
是一种特质。但是,要解决这个问题,您只需删除Matchers
扩展,并具有测试类:它将编译。尽管如此,在java中实际使用scalatest功能将非常困难。例如,一个简单的测试类是:
这个词
should
在anyflatspecklike上声明trait
也。所以你不能真正使用它。所以我不确定如何克服这个问题,因为这是一个非常基本的例子,你可以在scalatest快速入门中找到。经过以上分析,我认为在java中使用scalatest将非常困难。你能轻易做到的,恰恰相反。如果您已经支持scala,并且有scalatest,那么您可以在scala中测试java代码。它没有那么“条理化”,因为您希望看到java文件夹下的java测试类,我们刚刚证明了这是不可能的。我认为在这样的结构中,有这样的“混乱”是最好的解决办法。
dldeef672#
我完全同意@tomer shetah。我想补充一点,您可以在scala上为java创建 Package 器:
之后,您可以通过这个 Package 器扩展所有java测试类:
所有scala样式的代码都可以放入 Package 器中,然后使用原始java代码中的这些方法,比如其他解决方法。