Scroll to top

2020_1课程设计—基于BC的证书格式转换工具的设计与实现—Week 3

本周计划

  • 对项目进行完善总结
  • 增加对BouncyCastle、Certificate、CertificateFactory的认识
  • 尝试使用Junit对部分代码进行单元测试

本周反思

  对一些常用的方法的积累不够,查找资料时间耗费过多,说明日常敲的代码不够多,尤其是JAVA这类应用面较广的语言。希望下周能够大量阅读本组其他同学代码,取长补短,优化个人代码并且将测试代码补充完整。

学习记录

代码优化

代码结构

代码细节处理

  • scanner.nextLine(),一次读入一行,方便后续equal判断输入情况

  • String.toLowerCase()方法,将字符串转化为小写,如此可以规避大小写造成的问题

  • String.substring(),可以通过返回子字符串的方式检测后缀名

单元测试

检测异常抛出情况

  • Try…catch方法:检测是否抛出异常、检测异常抛出类型
    @Test
    public void testgetPemWithFileRead() {
        String path = "C:\\Users\\Administrator\\ca.cer";
        try {
            new FileReader(path);
       } catch (FileNotFoundException e) {
           e.printStackTrace();
        }
    }

    @Test
    public void testgetPemWithreadPemObject() {
        try {
            String path = "C:\\Users\\15205\\Desktop\\KEEP\\certs\\ca.der";
            PemReader reader = new PemReader(new FileReader(path));
            Object pemObject = reader.readPemObject();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testX509Certificate() {
        try {
            String path = "C:\\Users\\15205\\Desktop\\KEEP\\certs\\ca.der";
            PemReader reader = new PemReader(new FileReader(path));
            Object pemObject = reader.readPemObject();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

测试System.exit情况

  • 遇到不显示通不通过状况,处于中断状态

  • 使用checkPermission方法内部抛出异常解决

public class JudgeCertTest extends TestCase {
    @Before
    public void setUp() {
        final SecurityManager securityManager = new SecurityManager() {
            public void checkPermission(Permission permission) {
                /**
                 * 这里permission.getName()会返回exitVM. + status的形式
                 * 例如System.exit(0) 这里会是exitVM.0
                 * System.exit(1) 这里会是exitVM.1
                 * 这里不关系怎么退出的,只需要捕捉到,并不让他退出,继续运行我的测试代码就好了
                 */
                if (permission.getName().startsWith("exitVM")) {
                    throw new AccessControlException("");
                }
            }
        };
        System.setSecurityManager(securityManager);
    }
    @Test
    public void testReadCertwithexit() {
        String certSrc = "pem";
        String s = "cer";
        if (!s.equals(certSrc)) {
            try {
                System.exit(0);
            }
            catch (RuntimeException e) { }
            finally {
                // 屏蔽好之后,重新设置setSecurityManager为Null,防止junit退出的时候报错
                System.setSecurityManager(null);
            }
            System.out.println("end");

        }
    }
}

码云链接

参考资料

END

posted @ 2020-05-01 20:02  September_starlet  阅读(128)  评论(0编辑  收藏  举报
动态线条
动态线条end