我是第一次来,如果我错过了什么,很抱歉。我希望使用Spock绕过对静态方法的调用。反馈会很棒的
使用groovy mock,我认为我可以通过静态调用,但没有找到它。作为背景,我正在对遗留java中的测试进行改进。重构是禁止的。我使用spock-0.7和groovy-1.8。
对静态方法的调用与以下形式的实例调用链接在一起:
public class ClassUnderTest{
public void methodUnderTest(Parameter param){
//everything else commented out
Thing someThing = ClassWith
我们有一个ServletFilter,我们想用Spock进行单元测试,并检查对HttpServletRequest的调用。
下面的代码抛出java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/http/Cookie
def "some meaningless test"(){
given:
HttpServletRequest servletRequest = Mock(Http
可能重复:
我试图使用groovy对一个java类进行单元测试,Helper中有一个静态方法,其中获取了一个HttpClient,并在其中调用了executeMethod。为了对这个类进行单元测试,我尝试在一个Groovy测试用例中模拟这个httpClient.executeMethod(),但是我无法正确地模拟它。
下面是Java类
public class Helper{
public static message(final String serviceUrl){
HttpClient httpclient = new HttpClient()
我想做一些相互依赖的测试。因此,我有一个“主”-Test,它应该调用其他测试。下面是两个示例类:
@Stepwise
public class TestClass extends GebReportingSpec{
NotAutomaticExecutedIT test = new NotAutomaticExecutedIT();
def "anderen Test aufrufen"() {
given:
test."test"()
when:
def wert = true
then:
我是Spock的新手,试着写一个简单的Spock,但失败了:
Error:Groovyc: Could not instantiate global transform class org.spockframework.compiler.SpockTransform specified at jar:file:.../.m2/repository/org/spockframework/spock-core/1.0-groovy-2.4/spock-core-1.0-groovy-2.4.jar!/META-INF/services/org.codehaus.groovy.transform.A
当静态类在其他Java类中使用时,Groovy测试不会为该类创建模拟。下面是证明这一点的代码片段
测试中的Java类:
public class JavaClass {
public void method() {
ClassWithStaticMethod.doSomething();
}
}
带有静态方法的Java类:
public class ClassWithStaticMethod {
public static void doSomething() {
System.out.println("Static method
当使用spock-reports生成单元测试报告时,我得到了一个ClassCastException:
class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap')
我使用Java 11和Spock 2.0进行单元测试,使用spock-reports (2.0.1-RC3)生成测试报告,这是由尽力而为(2.22.2)启动的。我还使用了spock协作者(1.2.2)扩展。
虽然成功地创建了单个测试报告,但当spock-reports试图生成聚合HTML (
下面的类扩展了抽象类
public class MyConverter extends AbstractConverter<A, B> {
@Override
public B convert(A source) {
// implementation here
}
}
AbstractConverter来自org.modelmapper,它的声明如下:
public abstract class AbstractConverter<S, D> implements Converter<S, D> {
...
}
现在,从使用的
我从事Java项目,并开始使用Spock框架在Groovy中编写单元测试。但我对Spock的嘲弄功能有异议,希望有人能找出我做错了什么。
我有三个java类:一个FooContext (包含一个foo属性)、一个HasFooContext类(包含一个fooContext属性)和一个从HasFooContext继承的FooService (并且有一个调用fooContext的操作):
public class FooContext {
private Object foo = new Object();
public Object getFoo() {
return foo;
我已经浏览了StackOverflow和Google一段时间,试图找到能够在Spock规范中运行这段代码的正确配置/语法:
Sql mockSql = Mock()
但是,当我运行单元测试时,CGLIB会抛出一个令人讨厌的异常:
java.lang.IllegalAccessError: tried to access method groovy.sql.Sql.<init>()V from class groovy.sql.Sql$$EnhancerByCGLIB$$d0b7cd7f
at org.spockframework.mock.runtime.MockInstantia
我有一个Grails 1.3.7项目,但是当我安装Grails Spock插件时:我得到了这个:
Installed plugin spock-0.5-groovy-1.7 to location /Users/tiffany/.grails/1.3.7/projects/grails-with-spock/plugins/spock-0.5-groovy-1.7. ...
Resolving plugin JAR dependencies ...
[Fatal Error] settings.xml:19:2: The markup in the document following
我有一个开关语句来处理java enum,并且正在使用spock编写一些groovy单元测试。我已经添加了一个测试,以验证当前是否处理了每种类型的foo,而不引发异常。现在,我想测试一个未被识别的foo类型是否会引发异常。
要做到这一点,我将不得不模拟枚举,并且已经看到了这里概述的解决方案:
我也知道可以使用powermock,但是我真的很喜欢spock,因为我发现它非常轻量级,所以我正在寻找一个使用spock的解决方案。
我想像这样的事情可能会奏效:
def "An unexpected type of foo causes an exception to be thrown
我很难从IntelliJ IDE运行我的功能测试。在运行功能测试时,会收到以下错误消息:
java.lang.IllegalStateException: No reports dir has been configured, you need to set in the config file or via the build adapter.
at geb.Browser.getReportGroupDir(Browser.groovy:899)
at geb.Browser.cleanReportGroupDir(Browser.groovy:932)
at g
我正在尝试使用Maven在SPOCK groovy框架中测试静态java方法。
下面是java类
public class DataController {
private DataInterface userService;
public void setUserService(DataInterface userService) {
this.userService = userService;
}
public static int addNumber(){
int a = 10;
int b = 20;
我使用用Groovy编写的Spock测试来测试一些Java代码。我使用JMockit来模拟java代码中的方法,因为Spock只处理模拟Groovy类。我遇到了一个问题,一个JMockit MockUp在测试之间持久化。这样的模拟实例应该只存在于测试(每个JMockit文档),但这是行不通的,我认为这是因为它没有使用JMockit测试运行程序,而是使用了JMockit测试运行程序。
这是我所面临问题的最简单的例子。我有一个返回字符串的简单方法,我可以用MockUp更改方法的返回值,但是对于第三个测试,它仍然存在,这并不期望它被使用。
Java类
public class ClassToTest
我刚刚开始研究Java应用程序的Spock测试框架。我之前没有使用Groovy的经验。如何使用Spock框架将mock注入到构造函数中?下面是我的代码和测试示例。
public class ResourceClass {
private final IDynamoDBMapper factory = new DefaultDynamoDBClientFactory(DynamoDBConfig.fromProperties()).mapperClient();
private ServiceClass service;
@Inject
public Reso
我开始使用Spock测试框架,我的build.gradle依赖项部分如下所示:
dependencies {
testCompile "org.spockframework:spock-core:1.3-groovy-2.5"
}
我有一个(无用的) Spock测试,它需要创建存根:
def 'A test that will fail'() {
given: ''
def random = Stub(Random)
}
当启动时,测试在给定错误时失败:
CannotCreateMockException:无法为类jav
我正处于spock和groovy的初级阶段,我正在尝试测试一个简单的spring引导应用程序,并获得
下面是我的java和groovy代码以及异常细节。
Condition not satisfied:
mvc.perform(get('/hello')).andExpect(status().isOk())
| |
| groovy.lang.MissingMethodException: No signature of method: org.spockframework.controllers.TestControllerSpec
在升级到Grails 3.0.1的过程中。除了在2.4.4中运行良好的集成测试之外,所有这些都很好。
我注意到grails.test.spock.IntegrationSpec已经不在org.grails:grails-test:3.0.1了。
尝试扩展spock.lang.Specification并通过Gradle integrationTest任务运行,但是似乎没有注入Spring资源。还尝试了@Integration获得相同的错误,GGTS还抱怨:
General error during canonicalization: Provider "data" not in