TDD以及单元测试的重要性就不多说了啊,还是看看实际的开始实践吧
测试用例如下:

/**
 * Copyright(c) 2005 Ceno Techonologies, Ltd.
 *
 * History:
 *   2006-7-4 下午01:49:06 Created by guyang
 */
package com.numen.sessionframework.common.io;

import java.io.File;

import com.numen.sessionframework.common.io.ExtensionFileFilter;

import junit.framework.TestCase;

/**
 * 
 * @author <a href="mailto:hyysguyang@163.com">guyang</a>
 * @version 1.0 2006-7-4 下午01:49:06
 */
public class ExtensionFileFilterTest extends TestCase {

    /*
     * (non-Javadoc)
     * 
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
    }

    /*
     * (non-Javadoc)
     * 
     * @see junit.framework.TestCase#tearDown()
     */
    protected void tearDown() throws Exception {
        super.tearDown();
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
     */
    public void testNullAndEmptyInputAddExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(null);
        assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
        filter.addExtension("");
        assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
     */
    public void testSingleExtensionAddExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".gif");
        assertEquals("The size of extension list should be one", 1, filter.getExtensionList().size());
        assertEquals("The size of extension list should be '.gif'", ".gif", filter.getExtensionList().get(0));
        assertTrue("The extension list should contain '.gif' extension.", filter.getExtensionList().contains(".gif"));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
     */
    public void testHaveInvalidExtensionAddExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension("dfasdf,.dgs¥……5÷4¥sdg,.hgdfhsagh");
        assertEquals("The size of extension list should be two", 2, filter.getExtensionList().size());
        assertTrue("The extension list should contain '.dgs¥……5÷4¥sdg' extension.", filter.getExtensionList().contains(
                ".dgs¥……5÷4¥sdg"));
        assertTrue("The extension list should contain '.hgdfhsagh' extension.", filter.getExtensionList().contains(".hgdfhsagh"));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
     */
    public void testNormalExtensionAddExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".dfasdf,.dgs¥……5÷4¥sdg,.hgdfhsagh");
        assertEquals("The size of extension list should be three", 3, filter.getExtensionList().size());
        assertTrue("The extension list should contain '.dfasdf' extension.", filter.getExtensionList().contains(".dfasdf"));
        assertTrue("The extension list should contain '.dgs¥……5÷4¥sdg' extension.", filter.getExtensionList().contains(
                ".dgs¥……5÷4¥sdg"));
        assertTrue("The extension list should contain '.hgdfhsagh' extension.", filter.getExtensionList().contains(".hgdfhsagh"));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
     */
    public void testNullAndEmptyRemoveExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".txt");
        filter.removeExtension(null);
        filter.removeExtension("");
        assertEquals("The size of extension list should be one", 1, filter.getExtensionList().size());
        assertTrue("The extension list should contain '.txt' extension.", filter.getExtensionList().contains(".txt"));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
     */
    public void testSingleRemoveExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".txt");
        filter.removeExtension(".txt");
        filter.removeExtension("");
        assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
     */
    public void testHaveInvalidExtensionRemoveExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".gfdsags,.hdfhdsh,.txt");
        filter.removeExtension(".txt");
        filter.removeExtension("aaaa");
        assertEquals("The size of extension list should be two", 2, filter.getExtensionList().size());
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
     */
    public void testNormalExtensionRemoveExtension() {
        ExtensionFileFilter filter = new ExtensionFileFilter();
        filter.addExtension(".gfdsags,.hdfhdsh,.txt");
        filter.removeExtension(".hdfhdsh");
        filter.removeExtension(".gfdsags");
        filter.removeExtension(".txt");
        assertEquals("The size of extension list should be 0", 0, filter.getExtensionList().size());
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
     */
    public void testNoExtensionAccept() {
        File file = new File("");
        ExtensionFileFilter filter = new ExtensionFileFilter();
        assertFalse("The gif extension should is not allowed", filter.accept(file));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
     */
    public void testInvalidExtensionAccept() {
        File file = new File("gsdg");
        ExtensionFileFilter filter = new ExtensionFileFilter();
        assertFalse("The gsdg extension should is not allowed", filter.accept(file));
    }

    /**
     * Test method for
     * {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
     */
    public void testNormalExtensionAccept() {
        File file = new File(".gif");
        ExtensionFileFilter filter = new ExtensionFileFilter();
        assertFalse("The gif extension should is not allowed", filter.accept(file));
        filter.addExtension(".gif");
        assertTrue("The gif extension should is allowed", filter.accept(file));
        filter.addExtension("dgsagdsa,dgsagsag.gdsag,.gif");
        assertTrue("The gif extension should is allowed", filter.accept(file));

    }

}


相应的目标测试代码如下:

/**
 * Copyright(c) 2005 Ceno Techonologies, Ltd.
 *
 * History:
 *   2006-7-4 下午01:20:47 Created by guyang
 */
package com.numen.sessionframework.common.io;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件过滤器,用于过来特定的文件扩展名。
 * 
 * @author <a href="mailto:hyysguyang@163.com">guyang</a>
 * @version 1.0 2006-7-4 下午01:20:47
 */
public class ExtensionFileFilter implements FileFilter {
    /**
     * 扩展名列表
     */
    private List<String> extensionList = new ArrayList<String>();

    /**
     * 用于分隔用户扩展名的分隔符
     */
    private String separator = ",";

    public ExtensionFileFilter() {
    }

    /**
     * todo 缺少方法注释,通常写“构造”。
     * 
     * @param extensions 添加要过滤的扩展名,多个扩展名之间用分隔符隔开
     */
    public ExtensionFileFilter(String extensions) {
        this.addExtension(extensions);
    }

    /**
     * 添加要过滤的扩展名,多个扩展名之间用分隔符隔开
     * 
     * @param extensions 要过滤的扩展名
     */
    public void addExtension(String extensions) {
        if (null == extensions || "".equals(extensions)) {
            return;
        }
        String[] tempExtentionS = extensions.split(separator);
        for (String extension : tempExtentionS) {
            if (isValidExtension(extension)) {
                this.extensionList.add(extension);
            }
        }
    }

    /**
     * 判断是否是有效的扩展文件名
     * 
     * @param extension 扩展名
     * @return todo 缺少返回值注释
     */
    private boolean isValidExtension(String extension) {
        return !(null == extension || "".equals(extension) || !extension.startsWith("."));
        // return extensions.indexOf(".")>=0;
    }

    /**
     * 删除不需要过滤的扩展名,多个扩展名之间用分隔符隔开
     * 
     * @param extensions 扩展名
     */
    public void removeExtension(String extensions) {
        if (null == extensions || "".equals(extensions)) {
            return;
        }
        String[] tempExtentionS = extensions.split(separator);
        for (String extension : tempExtentionS) {
            if (isValidExtension(extension) && extensionList.contains(extension)) {
                extensionList.remove(extension);
            }
        }
    }

    public boolean accept(File file) {
        if (file.isDirectory()) {
            return false;
        }

        String name = file.getName();
        int index = name.lastIndexOf(".");
        if (index == -1 || index == name.length() - 1) {
            return false;
        }
        return this.extensionList.contains(name.substring(index));
    }

    /**
     * @return the extensionList
     */
    public List<String> getExtensionList() {
        return extensionList;
    }

    /**
     * @param extensionList the extensionList to set
     */
    public void setExtensionList(List<String> extensionList) {
        this.extensionList = extensionList;
    }

    /**
     * @return the separator
     */
    public String getSeparator() {
        return separator;
    }

    /**
     * @param separator the separator to set
     */
    public void setSeparator(String separator) {
        this.separator = separator;
    }

}



,记得在没写一个方法之前,先编写测试方法,先写好你想测什么东西,这样相应的测试方法写好了,然后就运行测试代码,之后去编写目标代码来让测试通过,记住小步前进。
评论
发表评论

您还没有登录,请登录后发表评论

hyysguyang
搜索本博客
最近加入圈子
存档
最新评论