首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Gradle AspectJ将生产方面编织成测试类

用Gradle AspectJ将生产方面编织成测试类
EN

Stack Overflow用户
提问于 2015-04-06 17:19:21
回答 2查看 2.5K关注 0票数 1

我正在使用Gradle AspectJ插件将一些生产方面编织到测试Java代码中。我本以为这个插件可以开箱即用,但显然情况并非如此:https://github.com/sedubois/gradle-aspectj-poc/tree/dc44f529831a485fcff8f4889dba8098784dddb4

UnsupportedOperationAspect编织到MainSevice (都在src/main/java下)是可行的,但是将相同的方面编织到TestService (在src/test/java下)是行不通的。

我刚接触过Groovy、Gradle和AspectJ,不知道是否应该添加一些testAspectpath配置或类似的配置。

EDIT1:似乎不相关,但是iajc给出了一个警告:

... :compileTestAspect [ant:iajc] [warning] incorrect classpath: [...]\gradle-aspectj-poc\build\resources\main ...

EDIT2:我天真地将这段代码添加到Gradle依赖项中:

代码语言:javascript
复制
ajInpath fileTree(dir: "src/test/java")
aspectpath fileTree(dir: "src/test/java")
testAjInpath fileTree(dir: "src/test/java")
testAspectpath fileTree(dir: "src/test/java")

这一点也没有帮助,第一个测试和第二个测试一样失败,这些新消息如下:

... :compileAspect [ant:iajc] [warning] build config error: skipping missing, empty or corrupt aspectpath entry: [...]\gradle-aspectj-poc\src\test\java\com\hello\aop\TestService.java [ant:iajc] [warning] build config error: skipping missing, empty or corrupt inpath entry: [...]\gradle-aspectj-poc\src\test\java\com\hello\aop\TestService.java ... :compileTestAspect [ant:iajc] [warning] build config error: skipping missing, empty or corrupt aspectpath entry: [...]\gradle-aspectj-poc\src\test\java\com\hello\aop\TestService.java [ant:iajc] [warning] build config error: skipping missing, empty or corrupt inpath entry: [...]\gradle-aspectj-poc\src\test\java\com\hello\aop\TestService.java [ant:iajc] [warning] incorrect classpath: [...]\gradle-aspectj-poc\build\resources\main ...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-07 08:39:46

默认情况下,插件不会编织测试类中的主要方面--我们从来没有为它做过配置选项。您可以使用以下行亲自完成此操作:

代码语言:javascript
复制
testAspectpath sourceSets.main.output
票数 3
EN

Stack Overflow用户

发布于 2015-04-07 06:08:21

没有与TestService#serviceMethod()匹配的表达式。

为了使您的测试用例工作,您需要通知您的服务方法,并且(非常重要)方面必须位于src/test/包中。否则编译器就不会把它编进去。

代码语言:javascript
复制
// located in `src/test/java` 

package com.hello.aop;

@Aspect
class UnsupportedOperationAspect {

    @Before("execution(void com.hello.aop.TestService.serviceMethod(..))")
    public void throwUnsupportedOperationOnMethod1() {
        throw new UnsupportedOperationException();
    }
}

我不知道您想通过向测试类提供建议来实现什么(这是专门针对测试用例的组件):让测试尽可能简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29476081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档