以下是该方案: 我在一个类中生成随机数据,并将其用作同一类中的方法中的参数。 如何在另一个类中使用完全相同的值?
以下是我的课程的简化版本:
public class A {
@Test
public void aMethod() {
RandomStringUUID ruuid = new RandomStringUUID();
}
}
然后:
public class B {
@Test
public void bMethod() {
// Want to use ruuid , without instantiating RandomStringUUID
// as i dont want new values, i want the one from class A
}
}
答案 0 :(得分:4)
使用静态方法:
public class A {
private final static RandomStringUUID ruuid = new RandomStringUUID();
public final static RandomStringUUID getRuuid() {
return ruuid;
}
@Test
public void aMethod() {
RandomStringUUID ruuid = getRuuid();
}
}
和
public class B {
@Test
public void bMethod() {
RandomStringUUID ruuid = A.getRuuid();
}
}
答案 1 :(得分:2)
使您的变量成为A类中的公共静态变量
public static RandomStringUUID RUUID = new RandomStringUUID();
在击败之后我进入投票计数
private RandomStringUUID uuid;
private createUuid() {
uuid = new RandomStringUUID(); //Or any other way you create it
}
public static RandomStringUUID getRuuidForOtherClassesToCheck() {
return ruuid;
}
OP的部分信息不足以推断它的设计规则,或仅仅是关于如何从类到类获取变量的简单JAVA问题。 :d
答案 2 :(得分:0)
要么A给B的值
public class B {
@Test
public void bMethod(RandomStringUUID ruuid) {
// Want to use ruuid , without instantiating RandomStringUUID
// as i dont want new values, i want the one from class A
}
}
或让A让它可供B访问,正如@sics所说
答案 3 :(得分:0)
我们有时测试使用辅助类。这可能是您(测试)案例的解决方案。因此A
不会为B
提供值,但两者都会从第三个类中获取相同的对象:
public class TestHelper {
private final static RandomStringUUID UUID = new RandomStringUUID();
public static RandomStringUUID getDummyRandomStringUUID() {
return UUID;
}
}
public class A {
@Test
public void aMethod() {
RandomStringUUID ruuid = TestHelper.getDummyRandomStringUUID();
}
}
(与B
相同)
测试仍然存在问题,因为每个测试运行使用不同的UUID值,因此测试不可重现。最好定义一个用于每次测试运行的静态UUID。