RandomStringUtils一次生成相似的值。如何产生差异?

时间:2018-10-12 10:37:18

标签: java variables random testng

我有问题。 在一次测试中,我在每次测试中都会生成随机数字变量(但具有String类型)。 我为此使用了RandomStringUtils lib。

但是对于所有测试,它仅生成该变量的一个值。如何在每次测试中产生新值

示例:

public void test() {
    JsonResponse response = dosomething(baseUrl(), generateId());
    assert something
}

和其他类中的generateId()方法

public static String generateId(){
        return RandomStringUtils.randomNumeric(6);
    }

整个测试套件看起来像(我得到的所有generateId()值都相等):

public class Tests {
public void test1() {
        JsonResponse response = dosomething(baseUrl(), generateId());
        assert something
    }

public void test2() {
        JsonResponse response = dosomething(baseUrl(), generateId());
        assert something
    }
}
public void test3() {
        JsonResponse response = dosomething(baseUrl(), generateId());
        assert something
    }

apache版本是3.7(在外部库中)

Export-Package: org.apache.commons.lang3;version="3.7",org.apache.comm
 ons.lang3.arch;version="3.7",org.apache.commons.lang3.builder;version
 ="3.7",org.apache.commons.lang3.concurrent;version="3.7",org.apache.c
 ommons.lang3.event;version="3.7",org.apache.commons.lang3.exception;v
 ersion="3.7",org.apache.commons.lang3.math;version="3.7",org.apache.c
 ommons.lang3.mutable;version="3.7",org.apache.commons.lang3.reflect;v
 ersion="3.7",org.apache.commons.lang3.text;version="3.7",org.apache.c
 ommons.lang3.text.translate;version="3.7",org.apache.commons.lang3.ti
 me;version="3.7",org.apache.commons.lang3.tuple;version="3.7"

2 个答案:

答案 0 :(得分:0)

我已经尝试过您的代码,并且每次测试中都有不同的数字。

您可以通过RandomStringUtils.randomNumeric(final int count)调用查看并发现有以下代码:

random(count, start, end, letters, numbers, null, RANDOM);

可能,您在Random中遇到了一些非常奇怪的问题。无论如何,您可以尝试使用自己的Random对象调用它。不要忘记用不同的种子数字创建随机对象。

答案 1 :(得分:0)

https://godbolt.org/z/LFuese已弃用

  

从3.6版本开始,改用commons-text RandomStringGenerator

使用以下替换代码示例:

// Generates a 20 code point string, using only the letters a-z
RandomStringGenerator generator = new RandomStringGenerator.Builder()
 .withinRange('a', 'z').build();
String randomLetters = generator.generate(20);