[J2EE][单元测试]

[J2EE][单元测试]

标签(空格分隔): 未分类


JUnit单元测试基础要点

  • 1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确。
  • 2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的。
  • 3.单元测试主要是来测试程序的结果和自己期望的值是否相等
  • 4.创建测试类的步骤:
    • 1)在工程下面创建一个名为 test 的 Source Folder ,这个源程序文件夹和 src文件夹的阶级是相等的
    • 2)测试类和目标类的包名要相同,这样的好处是测试类就不要import导入目标类的源码
    • 3)测试类的命名规则:假设目标类的名字是 Calculator,则创建的测试类应命名为 CalculatorTest 或者 TestCalculator

[J2EE][单元测试]_第1张图片

JUnit 4 测试框架

在junit 4 当中测试类无需继承于 TestCase类,测试方法的名字也无需以test开头,主要以注解的方式来定义,只要在测试方法加上@Test就可以进行测试,但有些原则还是要以junit3 的风格来设计,比如测试方法以test开头,习惯问题吧.

测试方法的要求

在添加测试方法之前,需要对测试方法做一些判断:
1)修饰符设为 public
2)返回类型 void
3)没有方法参数
4)方法名称必须以test开头

注解的类型

  • @Test :定义一个测试方法的标志
  • @Test(timeout=1000) :设置超时时间,如果测试时间超过了你定义的timeout,测试失败
  • @Test(expected) : 申明出会发生的异常,比如 @Test(expected = Exception.class)
  • @Before : 跟junit 3.8 上的setUp() 方法同样的效果,方法名最好和setUp()一样,但不强求,在每一个测试方法之前被执行
  • @After : 跟junit 3.8 上的tearDown() 方法同样的效果,方法名最好和tearDown()一样,但不强求,在每一个测试方法之后被执行
  • @BeforeClass : 被该注解申明的方法,功能是:在所有的测试方法之前执行,只执行一次
  • @AfterClass : 被该注解申明的方法,功能是:在所有的测试方法之后执行,只执行一次
  • @Ignore :让 测试方法 或 测试类 不被执行,让其失去测试的功能

重点..如何对DAO层实现类进行单元测试

之所以重点说,单元测试的时候mapper并不能自动注入,需要手动注入.

  • 使用Before进行注入
    public ApplicationContext applicationContext;
    public CompanycharacterlistMapper companycharacterlistMapper;
    @Before
    public void setUp(){
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
        companycharacterlistMapper = (CompanycharacterlistMapper) applicationContext.getBean("companycharacterlistMapper");
    }
    @Test
    public void testaddCompanyCharacter(){
        String name=new String("dadadddda");
        Companycharacterlist companycharacterlist= new Companycharacterlist();
        companycharacterlist.setCompanycharacter(name);
        //companycharacterlist.setCompanycharacterid(1);
        companycharacterlistMapper.insert(companycharacterlist);

    }

重点..如何对Service层进行单元测试


    
    <bean id="StudentServiceImpl" class="teamB.GraduateJob.service.impl.StudentServiceImpl"/>

    记住bean 的 id用来注入..
    如果用自动扫描的话.id=studentServiceImpl.
    并且是要扫描 teamB.GraduateJob.servic.impl

java代码

public class AdminServiceImplTest {
    public ApplicationContext applicationContext;
    public AdminService adminService;
    @Before
    public void setUp(){
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
        adminService = (AdminService) applicationContext.getBean("AdminServiceImpl");
    }
    @Test
    public void testaddCompanyCharacter(){
        String name=new String("dadada");
        adminService.addCompanyCharacter(name);
    }
}

你可能感兴趣的:([J2EE][单元测试])