当前位置: 首页 > 知识库问答 >
问题:

评估后测试自定义分级插件

鲁华皓
2023-03-14
@Before fun setup() {
  project = ProjectBuilder.builder().build()
  project.pluginManager.apply("my.plugin.name")
assertTrue(project.extensions.findByName("name") is MyConfigType)
assertTrue(project.tasks.findByName("mytask") is MyTaskType)

是否有一种不同的方式来接收价值?

共有1个答案

薛兴德
2023-03-14

我在gradle论坛上发布了我的类似问题,并解决了这个问题:https://discuss.gradle.org/t/unit-test-plugins-afterevaulate/37437/3

显然,afterevalue不是执行任务创建的最佳/正确位置。如果扩展中有DomainObjectCollection并且希望为集合中的每个元素创建任务,则任务创建应在集合的All回调中完成:

final MyExtension extension = project.getExtensions().create("extension", MyExtension.class);
extension.configurations.all((c) -> {
  // register task here
});

如果扩展中有简单的属性作为输入提供给任务,则应使用惰性配置:

public class MyExtension { 
  public final Property<String> property;
  public final NamedDomainObjectContainer<Configuration> configurations;

  @Inject
  public MyExtension(final ObjectFactory objectFactory) {
    property = objectFactory.property(String.class).convention("value");
    configurations = objectFactory.domainObjectContainer(Configuration.class);
  }
}

public abstract class MyTask extends DefaultTask {

  @Input
  private final Property<String> property = getProject().getObjects().property(String.class);

  public Property<String> getProperty() {
    return property;
  }
}
public class MyPlugin implements Plugin<Project> {

  @Override
  public void apply(final Project aProject) {
    final MyExtension extension = aProject.getExtensions().create("extension", MyExtension.class);
    aProject.getTasks().register("myTask", MyTask.class).configure((t) -> {
      t.getProperty().set(extension.property);
    });
  }
}
 类似资料:
  • 试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b

  • 我无法在任何地方找到如何在ES自定义评分函数中测试空值的示例。根据文档,脚本是时髦的,根据日志,脚本是无痛的评估,但即使这样,我仍然对一些错误感到困惑 这似乎表明我正在尝试将双精度值cas到布尔值并提出,但我需要测试非空值。 我的评分脚本应该怎么写? 编辑:我知道在无痛中我不能使用三进制的<代码>?:运算符,所以我必须显式地编写< code>doc['xx']。值!= null。然而,对于用空值索

  • 我正在编写一段代码,对给定的后缀表达式求值。每个操作数和运算符之间用空格分隔,最后一个运算符后跟空格和“x”。 例子: 内插表达式:(2*3 4)*(4*3 2) 后缀表达式:23*443*2*x “x”暗示表达的结束。 输入(后缀表达式)作为字符串由另一个函数给出,该函数将内缀表达式转换为后缀表达式。 后缀评估的功能是: 我给出的例子的输出应该是“140”,但我得到的是“6”。请帮我找出错误。

  • 我有一个自定义任务定义来运行每个测试具有特殊设置的特定测试文件。我的任务定义如下: 现在,此设置中的一些测试是不可靠的,我尝试再次运行它们,如下所示: 我编写了一个测试类,第一次总是失败,第二次总是成功: 不幸的是,测试只执行一次,整个测试套件失败。我可以使用中所述的自定义规则成功运行测试https://stackoverflow.com/a/55178053/6059889 有没有办法将测试重试

  • 问题内容: 我有以下控制器: 然后在茉莉花中进行以下测试: “应创建未分配用户的列表”测试失败,并显示以下错误: TypeError:’undefined’不是一个函数(评估$ browser。$$ checkUrlChange()) 我真的不知道为什么。任何帮助表示赞赏。 问题答案: 当您在angular.js和angular-mocks.js之间不匹配时,似乎会出现此问题。请确保两个文件的版本

  • 历元1/15 1200/1200 历元2/15 1200/1200[========================================================]-3s-损失:0.5481-Acc:0.7250-Val_Loss:0.4645-Val_Acc:0.8025 3S-损失:0.5078-ACC:0.7558-Val_Loss:0.4354-Val_ACC:0.797