个人项目:论文查重

个人项目:论文查重

这个作业属于哪个课程 < 班级链接 >
这个作业要求在哪里 < 作业链接 >
这个作业的目标 JProfiler的使用和git commit的使用

一、GitHub

Github链接:个人项目:论文查重

二、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
· Estimate · 估计这个任务需要多少时间 60 50
Development 开发
· Analysis · 需求分析 (包括学习新技术) 60 120
· Design Spec · 生成设计文档 60 50
· Design Review · 设计复审 30 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
· Design · 具体设计 30 30
· Coding · 具体编码 180 240
· Code Review · 代码复审 30 30
· Test · 测试(自我测试,修改代码,提交修改) 60 50
Reporting 报告
· Test Repor · 测试报告 30 20
· Size Measurement · 计算工作量 20 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 15
· 合计 610 665

三、模块接口的设计与实现过程

1.Java类文件

FileUtil用于文本文件与字符串的相互转换,Calculate类用于计算两个字符串的相似度.

Main是程序入口.

2.程序流程

从输入参数中分别获取文件,并转化成字符串.

将两个字符串输入Calculate提供的计算方法中,计算出结果并传给FileUtil,生成答案文件,

Calculate调用getSplitWords将文本分词,再合并出一个总词组,并计算出两个子词组的词频.计算出余弦相似度

四、测试

import com.tree.util.Calculate;
import com.tree.util.FileUtil;
import org.junit.jupiter.api.Test;

/**
 * @author lucifer
 */
public class CaculateTest {

    /**
     * 测试句子
     */
    @Test
    public void sentence(){
        String source = "我们去打球";
        String fake = "我们去学习";
        double res = Calculate.caculate(source,fake);
        assert res < 1;
    }

    /**
     *  测试与自身查重
     */
    @Test
    public void orig(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        double res = Calculate.caculate(source,fake);
        assert res == 1;
    }

    /**
     *  测试与增加版查重
     */
    @Test
    public void orig_add(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_add.txt");
        double res = Calculate.caculate(source,fake);
        assert res <= 1;
    }

    /**
     *  测试与删减版查重
     */
    @Test
    public void orig_del(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_del.txt");
        double res = Calculate.caculate(source,fake);
        assert res <= 1;
    }

    /**
     *  测试orig_0.8_dis_1.txt
     */
    @Test
    public void orig_dis(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_1.txt");
        double res = Calculate.caculate(source,fake);
        assert res <= 1;
    }

    /**
     *  测试orig_0.8_dis_10.txt
     */
    @Test
    public void orig_dis2(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_10.txt");
        double res = Calculate.caculate(source,fake);
        assert res <= 1;
    }

    /**
     *  测试orig_0.8_dis_15.txt
     */
    @Test
    public void orig_dis3(){
        String source = FileUtil.fileToString("src/main/resources/testFile/orig.txt");
        String fake = FileUtil.fileToString("src/main/resources/testFile/orig_0.8_dis_15.txt");
        double res = Calculate.caculate(source,fake);
        assert res <= 1;
    }
}

测试用时:

代码覆盖率:

除了Main类没有用到,以及测试并没有用到写出文件的方法.

五、性能测试

posted @ 2020-09-25 00:34  Tree25  阅读(191)  评论(0编辑  收藏  举报