我在服务类中有转移方法,我想为此方法创建一个测试,以检查转移值是否有效。
我要测试的方法是这样:
public void transfer(Account destiny, double value) {
Account origin = new Account();
if (value<= origin.getBalance()) {
this.withdraw(value);
destiny.setDeposit(value);
}
}
我现在开始修补测试。感谢您的理解。
答案 0 :(得分:1)
我首先建议您重构该方法。 您希望将其传递给方法,而不是在方法内部实例化/创建/查找原始帐户。 因此,您的新方法签名应如下所示
public void transfer(Account destiny, Account origin, double value) {
...
}
完成后,您的快乐路径测试用例应该看起来像这样
Account destiny = new Account();
destiny.setBalance(100); // Some way to set balance
Account origin = new Account();
origin.setBalance(75); // Some way to set balance
transfer(destiny,origin,25); //Call your method
assertEquals(origin.getBalance(), 50);
assertEquals(origin.getBalance(), 125);
您还可以在此处测试否定情况,即原始余额小于转账金额,因此不会发生转账,并且两个帐户的余额都不变。
答案 1 :(得分:0)
如何处理,请检查余额是否已更改
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>$id$</id>
<version>1.0.51</version>
<title>$title$</title>
<authors>Nicky</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<!--<projectUrl>http://project_url_here_or_delete_this_line/</projectUrl>
<iconUrl>http://icon_url_here_or_delete_this_line/</iconUrl>-->
<description>Test</description>
<releaseNotes>test</releaseNotes>
<copyright>$copyright$</copyright>
<dependencies>
<group targetFramework=".NETCoreApp3.1">
<dependency id="AutoMapper.Extensions.Microsoft.DependencyInjection" version="7.0.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" version="3.1.2" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Identity.UI" version="3.1.2" exclude="Build,Analyzers" />
<dependency id="Microsoft.EntityFrameworkCore" version="3.1.2" exclude="Build,Analyzers" />
<dependency id="Microsoft.EntityFrameworkCore.SqlServer" version="3.1.2" exclude="Build,Analyzers" />
<dependency id="Microsoft.EntityFrameworkCore.Sqlite" version="3.1.2" exclude="Build,Analyzers" />
<dependency id="Newtonsoft.Json" version="12.0.3" exclude="Build,Analyzers" />
</group>
</dependencies>
<frameworkReferences>
<group targetFramework=".NETCoreApp3.1">
<frameworkReference name="Microsoft.AspNetCore.App" />
</group>
</frameworkReferences>
<contentFiles>
<!-- Include Assets as Content -->
<files include="**/images/*.*" buildAction="EmbeddedResource" />
<files include="cs/**/*.*" buildAction="Compile" />
<files include="pp/**/*.*" buildAction="Compile" />
</contentFiles>
</metadata>
<files>
<!--<file src="contentFiles\**" target="contentFiles" />-->
<file src="Entities\*.cs" target="contentFiles\cs\any\Entities" />
<file src="Entities\*.pp" target="contentFiles\cs\any\Entities" />
</files>
</package>