c# - 单元测试不通过,为什么?
问题描述
我是 C# 初学者,我有一个包含以下说明的作业。我已经为他们提供了我创建的类的代码,这样你就可以有一些上下文,看看我是否做的一切都是正确的
我一直在尝试创建两个对象并将它们与单元测试中的 Assert.AreEqual 方法进行比较。但是,它一直在失败。这是我写的:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void EmptyAccount()
{
//given
Person person = new Person("John", "Smith");
BankAccount account = new BankAccount(person, 0.00);
//when
Person person2 = new Person("Michael", "Johnson");
BankAccount account2 = new BankAccount(person2, 0.00);
//then
Assert.AreEqual(account, account2);
}
class Program
{
static void Main(string[] args)
{
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public override string ToString()
{
return FirstName+LastName;
}
}
public class BankAccount
{
public Person Owner
{ get; private set; }
public static double Balance
{ get; private set; }
public static double InterestRate
{ get; private set; }
public BankAccount (Person person, double balance)
{
Balance = balance;
Owner = person;
}
public static void Deposit(double deposit)
{
Balance += deposit;
}
public static void Withdrawal(double withdrawal)
{
Balance -= withdrawal;
}
public static void DepositInterest(double interestRate)
{
interestRate = InterestRate;
Balance += (Balance * InterestRate);
}
public override string ToString()
{
return string.Format("Your name is {0} and your balance is {1}", Owner, Balance);
}
}
我做错了什么,我该如何解决?如果这是一个愚蠢的问题,我很抱歉,但就像我说的那样,我是编程新手。
解决方案
@BradleyDotNet的解释是关于为什么AreEqual
返回false
然后你的测试失败的完整解释。但我想说你能做些什么来解决你的问题。
在您的情况下,所有者BackAcounts
不同,您进入方法是正常的false
,AreEqual
并且您的测试失败
为了在第一步编写单元测试,您必须决定应该测试哪个单元,并且您必须在脑海中定义一个场景。
例如,当账户所有者想要提现时,您必须检查一些条件(e.g. Account is Empty or not)
使用您在具有名称的方法中检查这些条件,CanWithdraw
然后检查帐户是否为空 return false
。
为了测试这些场景,你可以编写这个测试:
...
[TestMethod]
public void CanWithdraw_AccountIsEmpty_ReturnsFalse()
{
var person = new Person("John", "Smith");
var account = new BankAccount(person, 0.00);
var result = account.CanWithdraw();
Assert.IsFalse(result);
}
我希望这个答案对你有所帮助。
推荐阅读
- c# - 如何将 Blazor WebAssembly 连接到数据库
- if-statement - 有人知道如何在 Atmega328p 的汇编中执行 if 语句吗?
- swift - 数据的自定义编码器
- angularjs - 使用 Angular JS 在高图表上绘制两条带有 JSON 数据的线的问题 - 名称未定义
- node.js - 使用 Twilio 函数发起出站呼叫
- python - 在 NLP 文本预处理中处理正则表达式时出错
- javascript - javascript中的单选按钮验证多个屏幕
- python - 如何使用 CTR 加密对图像进行加密?
- uicollectionviewcell - iOS14中的自定尺寸UICollectionViewCell
- java - Spring Boot + Jpa:如何使这种查找方法起作用?