我有以下构造函数
// many other variables not relevant for this question
private final boolean ignore;
public Client(@Value("${a.error}") boolean ignore) {
// setting many other variables not relevant for this question
this.ignore = ignore;
}
测试时:
@Before
public void setUp() {
client = new Client(true);
//many other setups
}
// tests correctly fine cos I set the ignore to true
@Test
public void testing(){
// someMethod uses the ignore value to do some actions and return true / false
assertTrue(client.someMethod());
}
@Test
public void howToTestIgnoreSetToFalse(){
// ?
}
这里我可以建议3个解决方案:
ReflectionUtils
@Before
public void setUp() {
client = new Client(true);
// rest of initialization
}
@Test
public void testing(){
assertTrue(client.someMethod());
}
@Test
public void howToTestIgnoreSetToFalse(){
Field fieldIgnore = Client.class.getDeclaredField("ignore");
ReflectionUtils.makeAccessible(fieldIgnore);
ReflectionUtils.setField(fieldIgnore, client, false);
assertFalse(client.someMethod());
}
@Test
public void howToTestIgnoreSetToFalse(){
Field fieldIgnore = Client.class.getDeclaredField("ignore");
// only the way of how you're initializing field is changed,
// everything else is the same
fieldIgnore.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);
fieldIgnore.set(client, false);
assertFalse(client.someMethod());
}
// setup method doesn't required anymore
@Test
public void testing(){
Client client = createClient(true);
assertTrue(client.someMethod());
}
@Test
public void howToTestIgnoreSetToFalse(){
Client client = createClient(false);
assertTrue(client.someMethod());
}
// factory method to prepare mocked/initialized instance
private static Client createClient(boolean ignore) {
Client client = new Client(ignore);
// do common initialization
// setup your mocks
return client;
}
希望有帮助!
问题内容: 我有一堂课要添加单元测试。该类具有多个构造函数,这些构造函数采用不同的类型并将其转换为规范形式,然后可以将其转换为其他类型。 实际上,它接受并转换为其他两种类型。 我正在尝试找出最合适的方法来测试这些构造函数。 应该有一个针对每个构造函数的测试和输出类型: 这导致许多不同的测试。如您所见,我正在努力命名它们。 应该有多个断言: 这有多个断言,这使我感到不舒服。它还正在测试getStri
我目前在我的大学学习初级java课程,仍然在学习编程的基础知识。这周我们一直在学习构造函数,我被困在本周任务的后半部分,所以任何帮助都将不胜感激。 实验室的第二部分(我一直坚持的部分)的说明如下: 为类Truck编写完整的代码,如下面的类图所示。一定不要在构造函数中使用重复的代码。例如,具有2个参数的构造函数应该调用具有1个参数的构造函数来设置柱体的值。 这些是它想让我做的构造函数。 任何关于如何
例如,我有一个这样的课; 我要做的是为模拟的构造函数编写单元测试。 如果是静态的,那么这将很容易,因为我可以使用然后调用构造函数。 有人知道有什么办法吗?
以下MySQL查询是等效的: 然而,行构造器表单(即第一个示例)的强大之处在于,您可以使用它来处理查询任意长度的值对列表。没有它,您必须编写动态sql,这是一个安全风险。使用第一个表单避免了这个棘手的问题。 但是,如何使用预准备状态在JDBC中表示这一点?例如: 我已经研究了setArray,但是如何在数组的值中表示列1和列2的值?我想知道是否接口可以作为这个管道。但是阅读文档时,我看不出它是如何
我想在Oracle对象类型中设置默认值,但它需要在构造函数中传递所有属性。 是否存在,以便我可以只传递构造函数中需要默认值的必需属性。 请参阅以下详细信息 现在,在上面的例子中,若我只在构造函数中传递Col3和Col4属性作为默认值,那个么它就不起作用了。请参见下面的示例。