如何从 maven 项目内的自定义 jar 运行测试?



我创建了带有存储库(MyRepo(,模型(MyClass(和一些测试(MyTests(的自定义jar。

这是我的自定义jar中的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MyApp.class)
public class MyTests{
private MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@Autowired
private MyRepo myRepo;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build();
}

该类中的测试如下所示:

@Test
@Transactional
@Rollback
public void test1() throws Exception {
MyClass user = myRepo.find(ID);
.....
mockMvc.perform(post(myRequest)
.contentType(CONTENT_TYPE)
.content(user))
.andExpect(status().is(MY_STATUS))
.andExpect(content().contentType(CONTENT_TYPE))
.andExpect(content().json(MY_RESPONSE.toString(), false));
}

我已将此罐子作为依赖项添加到 maven 项目中。

是否可以以某种方式配置和更改 MyTests 类或 jar 内的内容,以便我可以在 maven 项目的测试部分运行这些测试(MyTests(,我已经在其中添加了这个 jar 作为依赖项。例如,我想将这些测试称为:

@Autowired
MyTests myTests;
.....
myTests.runAllTests();

谁能告诉我怎么做这样的事情?

我希望罐子中的这些测试能够运行并测试我的 maven 项目及其数据库。

您可以使用:

public static void main(String[] args) throws Exception {                    
JUnitCore.main(
"TestCase1");            
}

仔细检查网址,看看 case.jar 是否是您声明的地方。还要检查TestCase1类是否在任何包中。例如,如果TestCase1在包 comp.lang 中.java并且在 case.jar root 的文件夹 comp/lang/java/下,那么你需要写:

loader.loadClass("comp.lang.java.TestCase1");

例:

import java.net.URL;
import java.net.URLClassLoader;
import junit.framework.TestResult;
import junit.textui.TestRunner;
public class MyTestRunner {
public static void main(String[] args) throws Exception{
URL url = new URL("file:///d:/case.jar");
URLClassLoader loader = new URLClassLoader(new URL[]{url});
loader.loadClass("TestCase1");
TestRunner runner = new TestRunner();
TestResult result = runner.start(new String[]{"TestCase1"});
System.out.println(result.toString());
}
}

最新更新