java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testFindUserByQueryVo], {ExactMatcher:fDisplayName=testFindUserByQueryVo(com.baidu.test.UserMapperTest)], {LeadingIdentifierMatcher:fClassName=com.baidu.test.UserMapperTest,fLeadingIdentifier=testFindUserByQueryVo]] from org.junit.internal.requests.ClassRequest@1de0aca6
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
如上所示:是在项目开发中进行JUnit4测试时,抛出的奇葩异常。以前看到No tests found 时都是没有写关键字造成的,这次不一样。
这次不一样,关键字也写了,还一直抛出这个异常。下面是源码;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.baidu.mapper.UserMapper;
import com.baidu.po.QueryVo;
import com.baidu.po.User;
public class UserMapperTest {
private SqlSessionFactory sqlSessionFactory;
@Before
private void init() throws IOException {
SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
this.sqlSessionFactory = sessionFactoryBuilder.build(resourceAsStream);
}
@Test
public void testFindUserByQueryVo() {
SqlSession sqlSession = this.sqlSessionFactory.openSession();
//获取代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("张");
QueryVo queryVo = new QueryVo();
queryVo.setUser(user);
List<User> list = userMapper.findUserByQueryVo(queryVo);
for (User user2 : list) {
System.out.println(user2);
}
sqlSession.close();
}
@Test
public void testFindUserCount(){
SqlSession sqlSession = this.sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("管理员");
int count = userMapper.findUserCount(user);
System.out.println(count);
sqlSession.close();
}
@Test
public void testFindUserList(){
SqlSession sqlSession = this.sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUsername("张");
List<User> list = userMapper.findUserList(user);
System.out.println(list);
sqlSession.close();
}
}
异常的意思是,没有找到测试。开始自己一直没有找出来,后来经过前辈的帮助,才发现问题所在。代码里面的init方法是使用快捷键生成的,
导致方法的默认权限修饰符为private;问题就出在这里,测试用例中的所有测试方法都必须有三点要求:1.方法无参数;2.方法无返回值;3.方法的权限为public;