幽灵资源网 Design By www.bzswh.com
NUnit 是为 .NET 框架生成的开放源代码单元测试框架。NUnit 使您可以用您喜欢的语言编写测试,从而测试应用程序的特定功能。当您首次编写代码时,单元测试是一种测试代码功能的很好方法,它还提供了一种对应用程序进行回归测试的方法。NUnit 应用程序提供了一个用于编写单元测试的框架,以及一个运行这些测试和查看结果的图形界面。
下载地址:http://sourceforge.net/projects/nunitaddin
本事例所用版本:http://www.cnblogs.com/Files/young18/nunit2.3.rar
namespace bank
2![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
{
3
public class Account
4![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
5
private float balance;
6
public void Deposit(float amount)
7![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
{
8
balance+=amount;
9
}
10![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
public void Withdraw(float amount)
12![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
13
balance-=amount;
14
}
15![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
16
public void TransferFunds(Account destination, float amount)
17![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
{ }
18![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
public float Balance
20![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
21![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
get
{ return balance;}
22
}
23
}
24
} 在我们来写一个需要测试的类—AccountTest,我们第一个测试的方法是TransferFunds
1
namespace bank
2![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
{
3
using NUnit.Framework;
4![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
[TestFixture]
6
public class AccountTest
7![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
{
8
[Test]
9
public void TransferFunds()
10![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
11
Account source = new Account();
12
source.Deposit(200.00F);
13
Account destination = new Account();
14
destination.Deposit(150.00F);
15
source.TransferFunds(destination, 100.00F);
16
Assert.AreEqual(250.00F, destination.Balance);
17
Assert.AreEqual(100.00F, source.Balance);
18
}
19
}
20
} 现在做的第一件事是声明这个类有一个[TestFixture]属性,通过这种方法显示这个类包含测试代码(此属性可以被继承),这个类必须是public类且其派生内没有限制,这个类当然必须有一个默认构造函数。
这个类仅有的一个方法—TransferFunds,有一个[Test]属性,显示他是一个测试方法,该方法返回void,没有参数,在这个方法里我们对测试对象作了必须的初始化,Assert类定义了一些方法的集合体,用它来检测设置条件,在我们的例子中,我们用AreEqual方法确保后面两个账户的转帐都有一个正确的剩余资金(这些是一些重载方法,这个例子中用的版本包含下面几个参数,第一个参数是期望值,第二个参试是真实值),
编译运行这个例子,假设你编译你的代码为bank.dll,运行NUnit Gui,选择File->Open menu item,载入刚才编译过的dll文件,点击run,我们可以看到测试条变成红色—我们的测试失败了,在“Errors and Failures”面板显示一面信息:
TransferFunds : expected <250> but was <150>
这个现象是我们所期望的,测试失败的原因是我们没有实现TransferFunds方法,现在我们开始让它工作,修改你的TransferFunds方法如下: 1
public void TransferFunds(Account destination, float amount)
2![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
{
3
destination.Deposit(amount);
4
Withdraw(amount);
5
} 现在我们再次编译代码,并在GUI中运行,我们何以看到测试条变绿!测试成功!
我们增加一些错误检测在我们的Account代码中,为balance设置一个最小值.依次来保护资金透支量 1
private float minimumBalance = 10.00F;
2
public float MinimumBalance
3![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
{
4![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
get
{ return minimumBalance;}
5
} 增加一个表明透支的异常;
1
public class InsufficientFundsException : ApplicationException
2![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
{
3
} 增加一个测试方法到AccountTest类中
1
[Test]
2
[ExpectedException(typeof(InsufficientFundsException))]
3
public void TransferWithInsufficientFunds()
4![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
5
Account source = new Account();
6
source.Deposit(200.00F);
7
Account destination = new Account();
8
destination.Deposit(150.00F);
9
source.TransferFunds(destination, 300.00F);
10
} 这个测试方法的[Test]属性有一个 [ExpectedException]属性,这表明这段测试代码期望得到某一类型的异常,如果这种异常没有出现在执行过程中,这车是失败,现在编译代码,启动NUnit Gui,这是测试条变红,提示错误信息:
TransferWithInsufficentFunds : InsufficientFundsException was expected
让我们重新配置Account的代码,让它抛出异常,按下面的实例修改TransferFunds方法. 1
public void TransferFunds(Account destination, float amount)
2![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
3
destination.Deposit(amount);
4
if(balance-amount < minimumBalance)
5
throw new InsufficientFundsException();
6
Withdraw(amount);
7
} 编译,运行测试-测试条变绿,成功了,但是,我们看看这个代码,我们仅仅写了我们可以看到的转帐操作中的错误,现在让我们来写一个测试来证实我们不确定的错误,添加下面一个测试方法
1
[Test]
2
public void TransferWithInsufficientFundsAtomicity()
3![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
4
Account source = new Account();
5
source.Deposit(200.00F);
6
Account destination = new Account();
7
destination.Deposit(150.00F);
8
try
9![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
{
10
source.TransferFunds(destination, 300.00F);
11
}
12
catch(InsufficientFundsException expected)
13![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
{
14
}
15
Assert.AreEqual(200.00F,source.Balance);
16
Assert.AreEqual(150.00F,destination.Balance);
17
} 编译运行—红色测试条,我们算错了300元,代码显示正确的结果是150元,但账户显示确是450,那么怎样修补错误,能不能加一段最小基金检测在资金处理之前呢?我们可以在catch块中加以一些修补方法,或依靠我们的管理人员修复对象的规定,我们需要在多方面回答这些问题,但不是在现在,那在此期间我们可以怎么做呢?移出它?一个最好的方法是忽视它,添加以下属性在你的测试方法中
1
[Test]
2
[Ignore("Decide how to implement transaction management")]
3
public void TransferWithInsufficientFundsAtomicity()
4![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
5
// code is the same
6
} 编译测试代码—黄色,点击"Tests Not Run",我们可以看到bank.AccountTest.TransferWithInsufficientFundsAtomicity() 在被忽视的测试列表里。
上面是一些常用简单方法,依次来讲解nunit的使用过程,在以后的单元,我们会深入讲解nunit的使用!
下载地址:http://sourceforge.net/projects/nunitaddin
本事例所用版本:http://www.cnblogs.com/Files/young18/nunit2.3.rar
NUnit Quick Start
原文档:http://www.nunit.org
翻 译:Young.J
说 明:该实例是最早期的nunit版本中找到,在测试驱动的开发中它并不是一个很好的例子,但它能阐明使用nunit的最基本方法。
现在开始我们的例子。假设我们开始写一个银行业的应用程序,我们有一个基类—Account,Account主要负责资金的增加,撤销和转帐,下面是该类的代码
1![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
2
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
3
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
4
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
5
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
8
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockEnd.gif)
10
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
12
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
13
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
14
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
16
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
18
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
20
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
21
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
22
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockEnd.gif)
24
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
2
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
3
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
4
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
8
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
10
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
11
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
12
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
14
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
16
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
18
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockEnd.gif)
20
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这个类仅有的一个方法—TransferFunds,有一个[Test]属性,显示他是一个测试方法,该方法返回void,没有参数,在这个方法里我们对测试对象作了必须的初始化,Assert类定义了一些方法的集合体,用它来检测设置条件,在我们的例子中,我们用AreEqual方法确保后面两个账户的转帐都有一个正确的剩余资金(这些是一些重载方法,这个例子中用的版本包含下面几个参数,第一个参数是期望值,第二个参试是真实值),
编译运行这个例子,假设你编译你的代码为bank.dll,运行NUnit Gui,选择File->Open menu item,载入刚才编译过的dll文件,点击run,我们可以看到测试条变成红色—我们的测试失败了,在“Errors and Failures”面板显示一面信息:
TransferFunds : expected <250> but was <150>
这个现象是我们所期望的,测试失败的原因是我们没有实现TransferFunds方法,现在我们开始让它工作,修改你的TransferFunds方法如下: 1
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
2
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
3
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
4
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockEnd.gif)
我们增加一些错误检测在我们的Account代码中,为balance设置一个最小值.依次来保护资金透支量 1
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
3
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
4
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
5
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
2
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/dot.gif)
3
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockEnd.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
3
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
5
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
7
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
9
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockEnd.gif)
TransferWithInsufficentFunds : InsufficientFundsException was expected
让我们重新配置Account的代码,让它抛出异常,按下面的实例修改TransferFunds方法. 1
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
3
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
5
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
7
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
2
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
4
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
8
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
10
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockEnd.gif)
12
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedSubBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
14
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/InBlock.gif)
16
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockEnd.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/None.gif)
3
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockStart.gif)
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/dot.gif)
5
![nunit使用指南之—NUnit Quick Start](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![nunit使用指南之—NUnit Quick Start](/UploadFiles/2021-04-02/ExpandedBlockEnd.gif)
上面是一些常用简单方法,依次来讲解nunit的使用过程,在以后的单元,我们会深入讲解nunit的使用!
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。