Grails - 什么是 mixin 及其在 Grails 测试中的意义?

Grails - What is mixin and its significance in Grails Testing?

我正在学习 Grails 测试,在文档的第一段中说

Grails 2.0.x 及更高版本弃用了这些测试工具,转而支持可应用于一系列不同类型测试(JUnit 3、JUnit 4、Spock 等)的 mixins。 ) 没有子类化

我研究了一下发现它在其他语言中被用于特殊的多重继承。我还找到了以下声明:

首先,你应该注意到 mixin 只存在于多继承语言中。您不能在 Java 或 C# 中进行混合。

谁能解释一下什么是 mixin 及其在 Grails 测试中的意义?

Can somebody explain what is mixin and its significance in Grails Testing?

Mixins 包含可以 "mixed in" 到其他 classes 的行为。在 Groovy 或 Java 中使用继承只能从一个超级 class 继承。 Mixin 允许将行为从其他几个 class 引入 class。

在 Grails 的早期版本中,您的单元测试 classes 通常会继承自 GroovyTestCaseGrailsUnitTestCase,以便您的测试继承有用的行为。一个问题是,如果你想使用 Spock 或将来出现的其他测试框架,那会很复杂,因为你想从 Spock 测试 class 继承行为,但也想从Grails 测试 class。使用 mixins,我们允许您的单元测试通过 mixin "inherit" 所有 Grails 测试行为,因此我们不会占用您的 1 个继承选项,如果您愿意,您可以从 Spocks 测试 class 继承.

mixin 有很多方法可以改善这种情况。那只是一个。