Java 如何从另一个测试调用测试?
如何从另一个测试调用测试 我在jar中有一个类,作为依赖项添加到我的项目中:Java 如何从另一个测试调用测试?,java,maven,spring-boot,testing,jar,Java,Maven,Spring Boot,Testing,Jar,如何从另一个测试调用测试 我在jar中有一个类,作为依赖项添加到我的项目中: public class Tests{ private MockMvc mockMvc; @Test public void test1() throws Exception { ..... mockMvc.perform(get(myRequest) .content(dataFromDB) ....... } } @Test public void test2() throws Exc
public class Tests{
private MockMvc mockMvc;
@Test
public void test1() throws Exception {
.....
mockMvc.perform(get(myRequest)
.content(dataFromDB)
.......
}
}
@Test
public void test2() throws Exception {
.....
mockMvc.perform(get(myRequest)
.content(dataFromDB)
.......
}
}
.......
在我的项目中,我有:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MyApp.class)
public class MyTests {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build();
}
@Test
public void test() throws Exception {
CALL SOMEHOW TESTS FROM THE JAR HERE
}
我希望这些来自jar的测试能够测试我的项目的数据库(例如:dataFromDB应该是添加了此依赖项的项目中的一些数据)
我已经添加了这个jar,我可以在我的项目中调用类测试,所以我可以访问它。我只是不知道如何在里面运行这些测试
我应该改变什么才能让它正常工作?谢谢
更新:
*我希望jar中的所有测试同时调用,而不是单独调用
*我想让jar访问我的db,这样它就可以在我的项目的db表中获得所有需要的测试数据。从这里可以看到,您有2组环境和1组测试 所以解决这个问题的一个方法是让环境可以通过,mockmvc,dataFromDb等等,这样测试就可以独立于环境执行 我建议将测试方法放在另一个类中,如下面这个非常简单的示例,以便于阅读:
class MyTestMethods {
void test1(TestEnv env, Req myRequest) {
env.getMockMvc()
.perform(env.get(myRequest)
.content(env.getDataFromDB());
// assertions here
}
}
class OldTestInJar {
@Test
public void test1() {
new MyTestMethods().test1(myEnv, myReq);
}
}
class MyNewTest {
@Test
public void test1() {
new MyTestMethods().test1(myNewEnv, myNewReq);
}
}
我不想在我的项目中单独调用jar中的每个测试。我想同时给他们打电话。可能吗?好的,我可以像env一样发送我的WebApplicationContext,对吗?但是我不想单独发送每个请求。我想让jar访问我的数据库,在那里它可以在db表中找到所有请求和所需的数据。例如,在jar中,我希望能够获得如下数据:dataIneed=repo.get(“somethingingeeded”);然后。内容(Datained)…这是一个使用多个环境实现的好例子。如果您使用的是spring之类的东西,那么使用依赖注入将是一个很好的用例。只需注入正确的环境,然后我们只需要使用新环境运行OldTestInJar。NewTestClass不需要运行旧的测试。