繁体   English   中英

TestNG:没有参数的测试方法

[英]TestNG: Test method without arguments

是时候写我的第一个测试了。 我很兴奋,但是我被困住了。 我有方法,应该验证已安装的Java版本

    public static boolean verifyJavaVersion() throws UserException {
    if (System.getProperty("java.version") != null) {
        String[] javaProperty = System.getProperty("java.version").substring(2, System.getProperty("java.version").length()).split("\\.");
        int installedJavaVersion = Integer.parseInt(javaProperty[0]);
        int installedJavaReleaseVersion = Integer.parseInt(javaProperty[1].substring(2, javaProperty[1].length()));
        if (installedJavaVersion != REQUIRED_JAVA_VERSION || installedJavaReleaseVersion < MINIMUM_JAVA_RELEASE_VERSION)
            throw new UserException("Java version is not correct. Required Java version "
                    + REQUIRED_JAVA_VERSION + ", release " + MINIMUM_JAVA_RELEASE_VERSION + " or higher");
        return true;
    }
    throw new UserException("Java version not found");
}

我有2个变量,它们都是private static final ,所以,正如你所看到的,这个方法中没有参数。 我如何测试这种方法,我应该测试任何期望改变这2个变量的东西吗?

我有一个想法是创建公共getter和setter来测试这些变量,但这是一个好的做法吗?

意识到编写测试很难,通常意味着可以改进代码。 对我而言,这是编写测试的最大原因之一:它们迫使您编写更好的代码!

如果你查看你的代码片段,它实际上做了几件事:

  • 它获取版本系统属性,可能抛出异常
  • 它提取两个版本并转换为整数
  • 然后它比较它们

考虑到这一点,您会发现这可以分成几个函数。 它们可以更容易地进行测试。

public static boolean verifyJavaVersion() throws UserException {
    String javaVersion = ...
    int installedJavaVersion = extractJavaVersion(javaVersion);
    int installedJavaReleaseVersion = extractJavaReleaseVersion(javaVersion);
    checkVersion(installedJavaVersion, REQUIRED_JAVA_VERSION, installedJavaReleaseVersion, MINIMUM_JAVA_RELEASE_VERSION);
}

每个都应该很容易测试。

为简单起见,我删除了您的空检查,但您看到了这个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM