![](/img/trans.png)
[英]How do I run the unit tests for Microsoft Unit Test framework from a VS2015 command prompt?
[英]Run unit tests in developer command prompt
我已經在VS 2017中創建了一個項目,其中有一個從此處復制的類。
namespace BankAccountNS
{
/// <summary>
/// Bank Account demo class.
/// </summary>
public class BankAccount
{
public const string DebitAmountExceedsBalanceMessage = "Debit amount exceeds balance";
public const string DebitAmountLessThanZeroMessage = "Debit amount less than zero";
private string m_customerName;
private double m_balance;
private bool m_frozen = false;
private BankAccount()
{ }
public BankAccount(string customerName, double balance)
{
m_customerName = customerName;
m_balance = balance;
}
public string CustomerName
{
get { return m_customerName; }
}
public double Balance
{
get { return m_balance; }
}
public void Debit(double amount)
{
if (m_frozen)
{
throw new Exception("Account frozen");
}
if (amount > m_balance)
{
throw new ArgumentOutOfRangeException("amount", amount, DebitAmountExceedsBalanceMessage);
}
if (amount < 0)
{
throw new ArgumentOutOfRangeException("amount", amount, DebitAmountLessThanZeroMessage);
}
m_balance -= amount;
}
public void Credit(double amount)
{
if (m_frozen)
{
throw new Exception("Account frozen");
}
if (amount < 0)
{
throw new ArgumentOutOfRangeException("amount");
}
m_balance += amount;
}
private void FreezeAccount()
{
m_frozen = true;
}
private void UnfreezeAccount()
{
m_frozen = false;
}
public static void Main()
{
BankAccount ba = new BankAccount("Mr. Bryan Walton", 11.99);
ba.Credit(5.77);
ba.Debit(11.22);
Console.WriteLine("Current balance is ${0}", ba.Balance);
}
}
}
另外,我還創建了一個使用單個類和兩個測試方法進行單元測試的項目
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BankAccountNS;
using System;
namespace BankTests
{
[TestClass()]
public class BankAccountTests
{
[TestMethod()]
public void Debit_WithValidAmount_UpdatesBalance()
{
// arrange
double beginningBalance = 11.99;
double debitAmount = 4.55;
double expected = 7.44;
BankAccount account = new BankAccount("Mr. Bryan Walton", beginningBalance);
// act
account.Debit(debitAmount);
// assert
double actual = account.Balance;
Assert.AreEqual(expected, actual, 0.001, "Account not debited correctly");
}
[TestMethod()]
public void Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange()
{
// arrange
double beginningBalance = 11.99;
double debitAmount = 20.0;
BankAccount account = new BankAccount("Mr. Bryan Walton", beginningBalance);
// act
try
{
account.Debit(debitAmount);
}
catch (ArgumentOutOfRangeException e)
{
// assert
StringAssert.Contains(e.Message, BankAccount.DebitAmountExceedsBalanceMessage);
return;
}
Assert.Fail("No exception was thrown.");
}
}
它在VS中效果很好,但是當我嘗試在控制台中運行它時,它會返回
沒有要執行的測試。
我檢查了先前文章中的共享解決方案,但是不幸的是,這對運行測試沒有幫助。 有人可以幫我解決這個問題嗎?
我不了解內置Test Explorer的例外,但是我確實將此框架與其他測試運行程序一起使用,它稱為smartrunner。 您為什么不嘗試Typemock的Isolator呢?它具有TmockRunner ,可以從命令行觸發測試,並且對像您這樣的異常/錯誤提供全面的支持。 它有免費試用版,因此,如果我的建議不起作用,不會造成任何損害。 由於與MSTest frameworkefork集成,它將為您100%工作,因此您無需在代碼中進行任何更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.