Tag: nunit

为什么在TeamCity中运行测试的时间比直接在NUnit中运行要长?

我有一些C#性能测试,基本上运行两种不同的方法,并检查一个运行速度比另一个快得多。 当我在NUnit中本地运行它们时,其中一个测试的运行速度是另一个的十倍,所以我有一个NUnit测试,它使用Stopwatch来检查它至少是两倍(如果是回归)。 但是当我在TeamCity中运行测试时,快速方法的速度只有慢速的1.5倍? 我希望硬件差异会产生一些影响,但不是这么多。 可能是什么导致了这个?

如何在NUnit 2.5中使用TestCase?

我有一个Currency类,我使用NHibernate将其保存到我的数据库中。 Currency类看起来像这样: public class Currency : Entity { public virtual string Code { get; set; } public virtual string Name { get; set; } public virtual string Symbol { get; set; } } 我使用[TestCase]编写了一个unit testing,如下所示: [TestCase(6,Result = new Currency ({ Code=”GBP”, Name=”British Pound”, Symbol=”£”}))] public Currency CanGetCurrencyById(int id) { ICurrencyRepo currencies = new RepoFactory().CreateCurrencyRepo(_session); Currency […]

如何断言是否使用nunit调用了一个方法

是否可以断言是否已调用方法? 我正在测试以下方法,我想声明_tokenManager.GetToken()已被调用。 我只是想知道方法是否已被调用,因为该方法不返回值。 我正在使用Moq。 谢谢, 代码段 public void Subscribe(string code, string emailAddress, string columnKey) { // Request authentication token var token = _tokenManager.GetToken(code, false); if (!_tokenValidator.Validate(token)) { // Token has expired or invalid – refresh the token token = _tokenManager.GetToken(code, true); } // Subscribe email _silverpopRepository.Subscribe(token.AccessToken, emailAddress, columnKey); }

如何将DateTime设置为ValuesAttribute进行unit testing?

我想做这样的事情 [Test] public void Test([Values(new DateTime(2010, 12, 01), new DateTime(2010, 12, 03))] DateTime from, [Values(new DateTime(2010, 12, 02), new DateTime(2010, 12, 04))] DateTime to) { IList result = MyMethod(from, to); Assert.AreEqual(1, result.Count); } 但是我得到关于参数的以下错误 属性参数必须是常量表达式,typeof表达式或数组创建表达式 有什么建议? 更新:关于NUnit 2.5中参数化测试的好文章 http://www.pgs-soft.com/new-features-in-nunit-2-5-part-1-parameterized-tests.html

xUnit.net Test Stripper

是否有可用的测试剥离器(在xUnit测试模式中定义),它支持删除包含标记为[Fact]等的方法的类以及从二进制文件[作为构建过程的一部分]对xunit.dll的依赖性? 有关完整要求和上下文的更多详细信息, 请参见此xUnit CodePlexpost 。 如果失败了(删除了测试和对DLL的引用),任何人都有一个实用程序/经过validation的干净方法来删除xunit.dll依赖,而不会在.vcproj文件中进行太多的修改等。 开源首选。 NUnit的一个干净的书面文件可能会作为基础。 注意:我知道将代码嵌入到程序集中的负面影响 – 这个问题不是关于这个问题(除非你在阅读了codeplex线程后感到遗漏了一些关键点)。

Selenium Grid Hub和节点问题

HELPPPP PLEASSEE! 现在我已经使用以下内容设置了selenium网格: -Machine A上有一个集线器和节点(集线器在同一台机器上的节点)。 -Machine B(与集线器不同的机器不一样),上面有2个节点。 因此,我现在有一个集线器和3个节点:1在集线器机器(机器A)上充当节点,2在另一个物理节点机器(机器B)上。 因此,通过此设置,我可以并行AFAIK运行3个测试用例。 我会帮助我所做的一切。 集线器的setup命令: java -jar selenium-server-standalone-3.0.0-beta2.jar -role hub -port 4445 (我更改了默认端口号) 节点的setup命令: java -jar -Dwebdriver.ie.driver =“C:\ Libraries \ IEDriverServer.exe”-Dwebdriver.chrome.driver =“C:\ Libraries \ chromedriver.exe”selenium-server-standalone-3.0.0-beta2.jar -role webdriver -hub http:// HubIP:4445 / grid / register -port 4453 然后是C#中的代码用于设置和测试: using System; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Safari; using OpenQA.Selenium.Edge; […]

如何断言方法具有指定的属性

是否可以将解决方案概括为适用于任何类型? 有一个很好的解决方案来断言方法上是否存在指定的属性: public static MethodInfo MethodOf( Expression expression ) { MethodCallExpression body = (MethodCallExpression)expression.Body; return body.Method; } public static bool MethodHasAuthorizeAttribute( Expression expression ) { var method = MethodOf( expression ); const bool includeInherited = false; return method.GetCustomAttributes( typeof( AuthorizeAttribute ), includeInherited ).Any(); } 用法如下: var sut = new SystemUnderTest(); var y = MethodHasAuthorizeAttribute(() => […]

使用Fortran DLL进行NUnit测试

我有一个来自Fortran的ServerCom DLL。 我使用tlbimp自动生成一个来自ServerCom.dll的MyFortran.dll,可以直接从C#引用。 在C#类库中,我引用了MyFortran.dll。 我创建了一个使用MyFortran.dll并生成正确清单的控制台应用程序(为了拥有一个自由交互的COM环境)。 它在控制台应用程序中完美运行。 现在,我写了一个简单的NUnit测试,我得到了一个COMexception。 System.Runtime.InteropServices.COMException:由于以下错误,检索具有CLSID {0FB0F699-4EF8-4732-B98E-C088825E3912}的组件的COM类工厂失败:80040154未注册类(HRESULTexception:0x80040154(REGDB_E_CLASSNOTREG))。 我怎么解决这个问题? 谢谢,阿德里安。

模拟枚举inheritance:最佳选择和实践

我正在设计一个测试应用程序(使用NUnit),它必须通过网页导航(通过Selenium Webdriver API)。 我想使用枚举来模拟站点结构,以便能够通过此枚举告诉方法导航的位置(尤其是NUnit方法)。 this.NavigateTo(Page.HomePage); 这是一个强烈的要求(在某处有一个枚举类型),主要是因为NUnit不能传递非基本类型。 例如,NUnit不可能使用这种语法,因为Page 必须是原始的或枚举的: static class Page{ public static Page HomePage; public static Page UserAccountPage; } /* … later … */ [TestCase(Page.HomePage)] void TestMethod(Page p) { … 我也想使用相同的enum-or-like来制作基本的inheritance,比如 interface IPage{} interface IPageNavigatable : Page {} interface IPageUserRelated : Page {} interface IWildcardPage : Page {} enum Page{ HomePage : IPageNavigatable, UserAccountPage […]

如何使用参数进行Nunit测试?

我想做一个接收参数的[Test] ,而不使用[TestCase]因为这个参数可以取多个值。 我似乎找不到办法做到这一点。 这是我想做的事情: [Test] static public void NUnitWriter(int errorCode) { Assert.AreEqual (0, errorCode); } 此函数只接收错误代码,如果它不是0(发生问题),则断言。