为构造函数编写 JUnit 测试用例
Writing a JUnit test case for a constructor
我有一项学校作业涉及学习如何使用 JUnit4。我需要确保此构造函数正常工作,但是,我不确定如何操作。余额有一个 getter,因此测试构造函数是否适用于此非常容易,但是,我不知道如何编写涉及用户和通过的测试用例,因为它们没有 getter秒。我是否为每个单独的参数写一个案例?为 return 一个值的方法编写案例并不太难,但我对为这个构造函数编写一个案例一无所知。谢谢!
public class BankAccount {
// Starting balance
private float balance = 0.0f;
// Username and password
private char[] username = null;
private char[] password = null;
public BankAccount(float balance, char[] user,char[] pass) {
this.balance = balance;
this.username = user;
this.password = pass;
}
}
在这种情况下,您应该编写一个测试。你不需要再写了,因为它只是重复的。此测试应控制字段分配:
@Test
public void propertiesAreSetOnBankAccountConstructor() {
float balance = 100F;
char[] userNameArray = {'u'};
char[] passArray = {'p'};
BankAccount testedObject = new BankAccount(balance, userNameArray, passArray);
assertEquals(balance, testedObject.getBalance(), 0F);
assertSame(userNameArray, testedObject.getUsername());
assertSame(passArray, testedObject.getPassword());
}
更新:
如果没有吸气剂,您可以使用 org.springframework.test.util.ReflectionTestUtils
(或仅使用纯反射):
@Test
public void propertiesAreSetOnBankAccountConstructor() {
float balance = 100F;
char[] userNameArray = {'u'};
char[] passArray = {'p'};
BankAccount testedObject = new BankAccount(balance, userNameArray, passArray);
assertEquals(balance, ((Float)ReflectionTestUtils.getField(testedObject, "balance")), 0F);
assertSame(userNameArray, ReflectionTestUtils.getField(testedObject, "username"));
assertSame(passArray, ReflectionTestUtils.getField(testedObject, "password"));
}
参考这个例子。
import static org.junit.Assert.assertThat;
import org.junit.Test;
public class CalculatorTest {
@Test
public void constructorTest(){
private Calculator c;
c = new Calculator(4, 5);
assertThat(9, is(c.sum()));
}
}
我有一项学校作业涉及学习如何使用 JUnit4。我需要确保此构造函数正常工作,但是,我不确定如何操作。余额有一个 getter,因此测试构造函数是否适用于此非常容易,但是,我不知道如何编写涉及用户和通过的测试用例,因为它们没有 getter秒。我是否为每个单独的参数写一个案例?为 return 一个值的方法编写案例并不太难,但我对为这个构造函数编写一个案例一无所知。谢谢!
public class BankAccount {
// Starting balance
private float balance = 0.0f;
// Username and password
private char[] username = null;
private char[] password = null;
public BankAccount(float balance, char[] user,char[] pass) {
this.balance = balance;
this.username = user;
this.password = pass;
}
}
在这种情况下,您应该编写一个测试。你不需要再写了,因为它只是重复的。此测试应控制字段分配:
@Test
public void propertiesAreSetOnBankAccountConstructor() {
float balance = 100F;
char[] userNameArray = {'u'};
char[] passArray = {'p'};
BankAccount testedObject = new BankAccount(balance, userNameArray, passArray);
assertEquals(balance, testedObject.getBalance(), 0F);
assertSame(userNameArray, testedObject.getUsername());
assertSame(passArray, testedObject.getPassword());
}
更新:
如果没有吸气剂,您可以使用 org.springframework.test.util.ReflectionTestUtils
(或仅使用纯反射):
@Test
public void propertiesAreSetOnBankAccountConstructor() {
float balance = 100F;
char[] userNameArray = {'u'};
char[] passArray = {'p'};
BankAccount testedObject = new BankAccount(balance, userNameArray, passArray);
assertEquals(balance, ((Float)ReflectionTestUtils.getField(testedObject, "balance")), 0F);
assertSame(userNameArray, ReflectionTestUtils.getField(testedObject, "username"));
assertSame(passArray, ReflectionTestUtils.getField(testedObject, "password"));
}
参考这个例子。
import static org.junit.Assert.assertThat;
import org.junit.Test;
public class CalculatorTest {
@Test
public void constructorTest(){
private Calculator c;
c = new Calculator(4, 5);
assertThat(9, is(c.sum()));
}
}