有没有办法在Maven项目中设置第二个persistence.xml文件,以便用于测试而不是用于部署的普通文件?
我尝试将一个persistence.xml放入src/test/resources/META-INF,它被复制到target/test-classes/META-INF中,但似乎是target/classes/META-INF(来自src/main的副本)尽管mvn -X test以正确的顺序列出了类路径条目,但首选资源是首选的:
[DEBUG] Test Classpath :
[DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/test-classes
[DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/classes
[DEBUG] /home/uqpbecke/.m2/repository/junit/junit/4.5/junit-4.5.jar
...
Run Code Online (Sandbox Code Playgroud)
我希望能够针对简单的hsqldb配置运行测试,而无需更改JPA配置的部署版本,理想情况是在项目结账后直接进行,无需进行本地调整.
我基本上是在尝试验证是否在方法中调用了正确的参数。
这是我尝试测试的代码片段:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.in("type", Arrays.asList("employee", "supervisor");
Run Code Online (Sandbox Code Playgroud)
使用以下方法验证:
Mockito.verify(mockSession).createCriteria(User.class);
Mockito.verify(mockCriteria).add(Restrictions.in("type", Arrays.asList("employee", "supervisor"));
Run Code Online (Sandbox Code Playgroud)
第一个验证语句有效。第二个不是,因为我相信 JVM 检测到两个不同的List对象进行比较。但是,当我将第二个验证语句更改为:
Mockito.verify(mockCriteria).add(Restrictions.in("type", Mockito.anyList());
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力。但是,我确实想确保员工和主管这两个字符串在内部,List并且使用Mockito.anyList().
我如何让这个工作?
编辑:请注意,我不想只验证列表是否已通过。我想确保在该列表中传递正确的字符串