用动态JVM语言补充JUnit测试电池 - java

我想开始将一系列详细的单元测试(大json,无法在标准Java中嵌入,进行大量bean字段检查)移植到更具表现力的语言中(例如Clojure,Groovy,Jython)。

根据我的经验,应该能够补充标准Java源代码的语言是Clojure和Groovy。 Rhino或BeanShell可能在这里使用,但是我对这些没有经验。

任何其他建议都将受到欢迎:

我的要求是:

1)该语言必须在与我的Java EE代码相同的环境中按原样运行。

2)该语言必须能够在字符串中嵌入多行大文本。

3)语言的单元测试必须由ANT和Maven junit任务/目标像正常的JUnit测试一样在本地运行。

4)语言的单元测试必须能够本地调用常规代码并与我的源代码库中的依赖项一起使用(即它必须可以访问常规junit测试包在我的类路径上的类),并且没有问题。

我的问题:

1)是否可以用一种语言编写源代码,同时用另一种junit语言编写junit测试,如果可以,是否有任何示例?

2)如果是,哪种语言最能满足上述1-3。

同样,对这种“用Java编写,用*进行junit测试”提议的优点的有意义的评论也将有所帮助。

谢谢!

参考方案

我曾经在寻找一个满足相同要求的测试库,而更多

来自单元测试,集成测试和端到端测试的相同框架
简化且直观的数据驱动测试
BDD类测试
过渡应该是渐进的(即我们是一家Java商店,如果某人不想利用groovy,他们仍然可以使用Java)

spock是一个强大的框架,可以满足所有要求。我们可以将JUNIT和Spock混合在一起。 Spock以与Junit等相同的格式生成报告。

例子

集成测试:Spock Grails,Spring和Unitils插件
端到端ui测试:Geb + Spock
端到端应用程序到Web服务等应用程序界面:HttpBuilder + http://groovy.codehaus.org/GroovyWS + Spock

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…