考虑到Haxe文件定义了一系列类,如下所示:
import flash.display.MovieClip;
import flash.display.Sprite;
import haxe.unit.TestCase;
class MainTest extends Sprite {
public var testcase:Array<Class<TestCase>> = ???;
}
class TestSprite extends TestCase {
function testBasic() {
var sprite = new Sprite();
sprite.x = 0;
assertEquals(sprite.x, 0);
}
}
class TestMovieClip extends TestCase {
function testMovieClip() {
var mc = new MovieClip();
mc.nextFrame();
assertEquals(mc.currentFrame, 2);
}
}
有没有办法获取所有助手类的列表(例如:TestSprite
和TestMovieClip
)?最好在运行时,但是返回Array<Class<TestCase>>
的宏也可以正常工作。
答案 0 :(得分:3)
我有一个名为compiletime的小型宏助手库,可以获取包中的所有类,或者扩展某个类的所有类。
haxelib install compiletime
然后通过基类或包来获取类:
var testcases = CompileTime.getAllClasses("my.package");
var testcases = CompileTime.getAllClasses(TestCase);
var testcases = CompileTime.getAllClasses("my.package",TestCase); // Both!
现在,这是通过包而不是模块来获取它们。通过模块获取它可能会起作用,我不确定是不是最重要的。但是如果你要编辑这部分代码:
https://github.com/jasononeil/compiletime/blob/master/src/CompileTime.hx#L208
并将其更改为也支持按模块获取,并向我发送拉取请求,我肯定会将其合并:)
祝你好运!