使用不同的类路径进行java测试

使用不同的类路径进行java测试,java,unit-testing,annotations,spock,Java,Unit Testing,Annotations,Spock,我已经在我的框架中实现了注入功能,因此我可以对接口的实现进行注释BattleResolver,然后让我希望注入这些实现的特定类根据类型enum的注释值决定使用哪一个 @Resolver(Conflict.ConflictType.INFANTRY_CONFLICT) public class TestArmorResolver implements BattleResolver { } @Resolver(ConflictType.ARMORED_CONFLICT) public class

我已经在我的框架中实现了注入功能,因此我可以对接口的实现进行注释BattleResolver,然后让我希望注入这些实现的特定类根据类型enum的注释值决定使用哪一个

@Resolver(Conflict.ConflictType.INFANTRY_CONFLICT)
public class TestArmorResolver implements BattleResolver {
}

@Resolver(ConflictType.ARMORED_CONFLICT)
public class TestInfantryResolver implements BattleResolver {
  // implementation
}
正如您所看到的,这两个类之间的区别在于它们解决的冲突类型。我已经编写了一个测试,可以确保这些类对于注入是有效的,并且对于给定的冲突类型将注入适当的类

现在我想测试一下副作用。类似于为相同的类型解析两个类,这是框架所不允许的

区别只会如下所示:

@Resolver(ConflictType.INFANTRY_CONFLICT)
public class TestInfantryResolverWrong implements BattleResolver {
  // implementation
}

@Resolver(Conflict.ConflictType.INFANTRY_CONFLICT)
public class TestArmorResolverWrong implements BattleResolver {
}
两者都有步兵冲突类型。我没有办法实际告诉测试采用后两种而不是前两种,因此我可以测试错误的用户行为


我想创建第二个类路径或第三个类路径来存储我的测试夹具java类。但是如何实际地将测试定向到这些类路径以获取测试夹具。以及如何让测试实际访问主类路径的类?

您需要分享更多的代码,尤其是通过类加载器进行解析的代码。最简单的方法可能是为解析器提供自己的类加载器进行测试。您考虑过使用Spring和概要文件吗?听起来你在重建它。如果您有意这样做,您可能想看看Spring概要文件是如何实现的。maven概要文件呢?那怎么行呢#