Modal Dialogs in nunit tests block test runner foreverNUnit vs Visual Studio 2008's Test Projects for Unit Testing?Calling GetGUIThreadInfo via P/InvokeNUnit Test Run OrderUnit test, NUnit or Visual studio?How to kill an alert window in Windows using C#?NUnit Unit tests not showing in Test Explorer with Test Adapter installedRunning nunit test with specific dataRunning NUnit tests from external test suite assembly in Visual Studio Test RunnerCreate NUnit test cases “on the fly”Parallel test process per assembly with NUnit 3 and TeamCity NUnit Runner

Do predators tend to have vertical slit pupils versus horizontal for prey animals?

Convert HTML color to OLE

Are illustrations in novels frowned upon?

How does the government purchase things?

Is it appropriate for a business to ask me for my credit report?

How much code would a codegolf golf if a codegolf could golf code?

What is a "click" in Greek or Latin?

How did Apollo 15's depressurization work?

Stuffing in the middle

Earliest evidence of objects intended for future archaeologists?

Church Booleans

Would it be illegal for Facebook to actively promote a political agenda?

Are there reliable, formulaic ways to form chords on the guitar?

How does the Saturn V Dynamic Test Stand work?

Use of vor in this sentence

Vacuum collapse -- why do strong metals implode but glass doesn't?

Alchemist potion on Undead

Chord with lyrics - What does it mean if there is an empty space instead of a Chord?

Why don't sharp and flat root note chords seem to be present in much guitar music?

Sous vide chicken without an internal temperature of 165

How to think about joining a company whose business I do not understand?

Is there such a thing as too inconvenient?

Count the frequency of integers in an array

How big would a Daddy Longlegs Spider need to be to kill an average Human?



Modal Dialogs in nunit tests block test runner forever


NUnit vs Visual Studio 2008's Test Projects for Unit Testing?Calling GetGUIThreadInfo via P/InvokeNUnit Test Run OrderUnit test, NUnit or Visual studio?How to kill an alert window in Windows using C#?NUnit Unit tests not showing in Test Explorer with Test Adapter installedRunning nunit test with specific dataRunning NUnit tests from external test suite assembly in Visual Studio Test RunnerCreate NUnit test cases “on the fly”Parallel test process per assembly with NUnit 3 and TeamCity NUnit Runner






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I want to unit test my UI classes (without actually showing it). I do this by invoking the constructor then calling various methods on it (as you would a normal class). At no point does the UI actually get shown by windows. However some of the UIs will throw up a modal dialog under some circumstances, I want to treat this as an error condition and fail the test.



I have tried the Timeout attribute but it isn't working (Test1), it just shows the dialog and hangs the test. I have an implementation (Test2) which works but it's a bit ugly.



Is there a cleaner way of treating modal windows as an error condition? / forcing a timeout even when modal dialogue is showing.



I am using Visual Studio test runner and nunit version 3



class Test

//does not work
[Test, Timeout(5000)]
public void Test1()

//blocks test and timeout is not respected
MessageBox.Show("It went wrong");


//works but is ugly
[Test]
public void Test2()

Task runUIStuff = new Task(()=>

MessageBox.Show("It went wrong");

);
runUIStuff.Start();

Task.WaitAny(Task.Delay(5000), runUIStuff);

if(!runUIStuff.IsCompleted)

Process.GetCurrentProcess().CloseMainWindow();
Assert.Fail("Test did not complete after timeout");





Update



Thanks for the pointer to Coded UI Tests. That looks like a good potential solution.



Since I did get something working in the mean time I thought I'd update it. This solution involves running the test in a STA thread with a custom timeout/shutdown implementation. It is an NUnitAttribute so can be used just like [Test]. It's pretty hacky and (presumabily) windows specific but it does seem to work reliably for my environment (where I don't actually want the UIs showing at all).



using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
using NUnit.Framework.Internal.Commands;

namespace CatalogueLibraryTests.UserInterfaceTests

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
class UITimeoutAttribute : NUnitAttribute, IWrapTestMethod

private readonly int _timeout;

/// <summary>
/// Allows <paramref name="timeout"/> for the test to complete before calling <see cref="Process.CloseMainWindow"/> and failing the test
/// </summary>
/// <param name="timeout">timeout in milliseconds</param>
public UITimeoutAttribute(int timeout)

this._timeout = timeout;


/// <inheritdoc/>
public TestCommand Wrap(TestCommand command)

return new TimeoutCommand(command, this._timeout);


private class TimeoutCommand : DelegatingTestCommand

private int _timeout;

public TimeoutCommand(TestCommand innerCommand, int timeout): base(innerCommand)

_timeout = timeout;


[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, IntPtr lParam);

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

private string YesNoDialog = "#32770";

private const UInt32 WM_CLOSE = 0x0010;
private const UInt32 WM_COMMAND = 0x0111;
private int IDNO = 7;


public override TestResult Execute(TestExecutionContext context)

TestResult result = null;
Exception threadException = null;

Thread thread = new Thread(() =>

try

result = innerCommand.Execute(context);

catch (Exception ex)

threadException = ex;

);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

try

while (thread.IsAlive && (_timeout > 0
catch (AggregateException ae)

throw ae.InnerException;







Usage



[Test, UITimeout(500)]
public void TestMessageBox()

MessageBox.Show("hey");

[Test, UITimeout(500)]
public void TestMessageBoxYesNo()

MessageBox.Show("hey","there",MessageBoxButtons.YesNo);










share|improve this question





















  • 1





    TestStack.White

    – Fabio
    Apr 1 at 10:02

















1















I want to unit test my UI classes (without actually showing it). I do this by invoking the constructor then calling various methods on it (as you would a normal class). At no point does the UI actually get shown by windows. However some of the UIs will throw up a modal dialog under some circumstances, I want to treat this as an error condition and fail the test.



I have tried the Timeout attribute but it isn't working (Test1), it just shows the dialog and hangs the test. I have an implementation (Test2) which works but it's a bit ugly.



Is there a cleaner way of treating modal windows as an error condition? / forcing a timeout even when modal dialogue is showing.



I am using Visual Studio test runner and nunit version 3



class Test

//does not work
[Test, Timeout(5000)]
public void Test1()

//blocks test and timeout is not respected
MessageBox.Show("It went wrong");


//works but is ugly
[Test]
public void Test2()

Task runUIStuff = new Task(()=>

MessageBox.Show("It went wrong");

);
runUIStuff.Start();

Task.WaitAny(Task.Delay(5000), runUIStuff);

if(!runUIStuff.IsCompleted)

Process.GetCurrentProcess().CloseMainWindow();
Assert.Fail("Test did not complete after timeout");





Update



Thanks for the pointer to Coded UI Tests. That looks like a good potential solution.



Since I did get something working in the mean time I thought I'd update it. This solution involves running the test in a STA thread with a custom timeout/shutdown implementation. It is an NUnitAttribute so can be used just like [Test]. It's pretty hacky and (presumabily) windows specific but it does seem to work reliably for my environment (where I don't actually want the UIs showing at all).



using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
using NUnit.Framework.Internal.Commands;

namespace CatalogueLibraryTests.UserInterfaceTests

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
class UITimeoutAttribute : NUnitAttribute, IWrapTestMethod

private readonly int _timeout;

/// <summary>
/// Allows <paramref name="timeout"/> for the test to complete before calling <see cref="Process.CloseMainWindow"/> and failing the test
/// </summary>
/// <param name="timeout">timeout in milliseconds</param>
public UITimeoutAttribute(int timeout)

this._timeout = timeout;


/// <inheritdoc/>
public TestCommand Wrap(TestCommand command)

return new TimeoutCommand(command, this._timeout);


private class TimeoutCommand : DelegatingTestCommand

private int _timeout;

public TimeoutCommand(TestCommand innerCommand, int timeout): base(innerCommand)

_timeout = timeout;


[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, IntPtr lParam);

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

private string YesNoDialog = "#32770";

private const UInt32 WM_CLOSE = 0x0010;
private const UInt32 WM_COMMAND = 0x0111;
private int IDNO = 7;


public override TestResult Execute(TestExecutionContext context)

TestResult result = null;
Exception threadException = null;

Thread thread = new Thread(() =>

try

result = innerCommand.Execute(context);

catch (Exception ex)

threadException = ex;

);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

try

while (thread.IsAlive && (_timeout > 0
catch (AggregateException ae)

throw ae.InnerException;







Usage



[Test, UITimeout(500)]
public void TestMessageBox()

MessageBox.Show("hey");

[Test, UITimeout(500)]
public void TestMessageBoxYesNo()

MessageBox.Show("hey","there",MessageBoxButtons.YesNo);










share|improve this question





















  • 1





    TestStack.White

    – Fabio
    Apr 1 at 10:02













1












1








1


0






I want to unit test my UI classes (without actually showing it). I do this by invoking the constructor then calling various methods on it (as you would a normal class). At no point does the UI actually get shown by windows. However some of the UIs will throw up a modal dialog under some circumstances, I want to treat this as an error condition and fail the test.



I have tried the Timeout attribute but it isn't working (Test1), it just shows the dialog and hangs the test. I have an implementation (Test2) which works but it's a bit ugly.



Is there a cleaner way of treating modal windows as an error condition? / forcing a timeout even when modal dialogue is showing.



I am using Visual Studio test runner and nunit version 3



class Test

//does not work
[Test, Timeout(5000)]
public void Test1()

//blocks test and timeout is not respected
MessageBox.Show("It went wrong");


//works but is ugly
[Test]
public void Test2()

Task runUIStuff = new Task(()=>

MessageBox.Show("It went wrong");

);
runUIStuff.Start();

Task.WaitAny(Task.Delay(5000), runUIStuff);

if(!runUIStuff.IsCompleted)

Process.GetCurrentProcess().CloseMainWindow();
Assert.Fail("Test did not complete after timeout");





Update



Thanks for the pointer to Coded UI Tests. That looks like a good potential solution.



Since I did get something working in the mean time I thought I'd update it. This solution involves running the test in a STA thread with a custom timeout/shutdown implementation. It is an NUnitAttribute so can be used just like [Test]. It's pretty hacky and (presumabily) windows specific but it does seem to work reliably for my environment (where I don't actually want the UIs showing at all).



using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
using NUnit.Framework.Internal.Commands;

namespace CatalogueLibraryTests.UserInterfaceTests

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
class UITimeoutAttribute : NUnitAttribute, IWrapTestMethod

private readonly int _timeout;

/// <summary>
/// Allows <paramref name="timeout"/> for the test to complete before calling <see cref="Process.CloseMainWindow"/> and failing the test
/// </summary>
/// <param name="timeout">timeout in milliseconds</param>
public UITimeoutAttribute(int timeout)

this._timeout = timeout;


/// <inheritdoc/>
public TestCommand Wrap(TestCommand command)

return new TimeoutCommand(command, this._timeout);


private class TimeoutCommand : DelegatingTestCommand

private int _timeout;

public TimeoutCommand(TestCommand innerCommand, int timeout): base(innerCommand)

_timeout = timeout;


[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, IntPtr lParam);

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

private string YesNoDialog = "#32770";

private const UInt32 WM_CLOSE = 0x0010;
private const UInt32 WM_COMMAND = 0x0111;
private int IDNO = 7;


public override TestResult Execute(TestExecutionContext context)

TestResult result = null;
Exception threadException = null;

Thread thread = new Thread(() =>

try

result = innerCommand.Execute(context);

catch (Exception ex)

threadException = ex;

);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

try

while (thread.IsAlive && (_timeout > 0
catch (AggregateException ae)

throw ae.InnerException;







Usage



[Test, UITimeout(500)]
public void TestMessageBox()

MessageBox.Show("hey");

[Test, UITimeout(500)]
public void TestMessageBoxYesNo()

MessageBox.Show("hey","there",MessageBoxButtons.YesNo);










share|improve this question
















I want to unit test my UI classes (without actually showing it). I do this by invoking the constructor then calling various methods on it (as you would a normal class). At no point does the UI actually get shown by windows. However some of the UIs will throw up a modal dialog under some circumstances, I want to treat this as an error condition and fail the test.



I have tried the Timeout attribute but it isn't working (Test1), it just shows the dialog and hangs the test. I have an implementation (Test2) which works but it's a bit ugly.



Is there a cleaner way of treating modal windows as an error condition? / forcing a timeout even when modal dialogue is showing.



I am using Visual Studio test runner and nunit version 3



class Test

//does not work
[Test, Timeout(5000)]
public void Test1()

//blocks test and timeout is not respected
MessageBox.Show("It went wrong");


//works but is ugly
[Test]
public void Test2()

Task runUIStuff = new Task(()=>

MessageBox.Show("It went wrong");

);
runUIStuff.Start();

Task.WaitAny(Task.Delay(5000), runUIStuff);

if(!runUIStuff.IsCompleted)

Process.GetCurrentProcess().CloseMainWindow();
Assert.Fail("Test did not complete after timeout");





Update



Thanks for the pointer to Coded UI Tests. That looks like a good potential solution.



Since I did get something working in the mean time I thought I'd update it. This solution involves running the test in a STA thread with a custom timeout/shutdown implementation. It is an NUnitAttribute so can be used just like [Test]. It's pretty hacky and (presumabily) windows specific but it does seem to work reliably for my environment (where I don't actually want the UIs showing at all).



using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
using NUnit.Framework.Internal.Commands;

namespace CatalogueLibraryTests.UserInterfaceTests

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
class UITimeoutAttribute : NUnitAttribute, IWrapTestMethod

private readonly int _timeout;

/// <summary>
/// Allows <paramref name="timeout"/> for the test to complete before calling <see cref="Process.CloseMainWindow"/> and failing the test
/// </summary>
/// <param name="timeout">timeout in milliseconds</param>
public UITimeoutAttribute(int timeout)

this._timeout = timeout;


/// <inheritdoc/>
public TestCommand Wrap(TestCommand command)

return new TimeoutCommand(command, this._timeout);


private class TimeoutCommand : DelegatingTestCommand

private int _timeout;

public TimeoutCommand(TestCommand innerCommand, int timeout): base(innerCommand)

_timeout = timeout;


[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, IntPtr lParam);

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);

private string YesNoDialog = "#32770";

private const UInt32 WM_CLOSE = 0x0010;
private const UInt32 WM_COMMAND = 0x0111;
private int IDNO = 7;


public override TestResult Execute(TestExecutionContext context)

TestResult result = null;
Exception threadException = null;

Thread thread = new Thread(() =>

try

result = innerCommand.Execute(context);

catch (Exception ex)

threadException = ex;

);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

try

while (thread.IsAlive && (_timeout > 0
catch (AggregateException ae)

throw ae.InnerException;







Usage



[Test, UITimeout(500)]
public void TestMessageBox()

MessageBox.Show("hey");

[Test, UITimeout(500)]
public void TestMessageBoxYesNo()

MessageBox.Show("hey","there",MessageBoxButtons.YesNo);







c# winforms nunit nunit-3.0






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 1 at 14:19







Thomas N

















asked Mar 27 at 14:50









Thomas NThomas N

3032 silver badges8 bronze badges




3032 silver badges8 bronze badges










  • 1





    TestStack.White

    – Fabio
    Apr 1 at 10:02












  • 1





    TestStack.White

    – Fabio
    Apr 1 at 10:02







1




1





TestStack.White

– Fabio
Apr 1 at 10:02





TestStack.White

– Fabio
Apr 1 at 10:02












1 Answer
1






active

oldest

votes


















2














NUnit is really not equiped to test UI. Assuming from the flags you are working with Winforms in c# you should switch to CodedUI tests for this.
It is also advizable to try and take the code out of the form classes and bind to a view-model. The view and viewmodels will be testable and you code will be cleaner.






share|improve this answer

























  • Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

    – Thomas N
    Apr 1 at 9:30










Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55380161%2fmodal-dialogs-in-nunit-tests-block-test-runner-forever%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














NUnit is really not equiped to test UI. Assuming from the flags you are working with Winforms in c# you should switch to CodedUI tests for this.
It is also advizable to try and take the code out of the form classes and bind to a view-model. The view and viewmodels will be testable and you code will be cleaner.






share|improve this answer

























  • Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

    – Thomas N
    Apr 1 at 9:30















2














NUnit is really not equiped to test UI. Assuming from the flags you are working with Winforms in c# you should switch to CodedUI tests for this.
It is also advizable to try and take the code out of the form classes and bind to a view-model. The view and viewmodels will be testable and you code will be cleaner.






share|improve this answer

























  • Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

    – Thomas N
    Apr 1 at 9:30













2












2








2







NUnit is really not equiped to test UI. Assuming from the flags you are working with Winforms in c# you should switch to CodedUI tests for this.
It is also advizable to try and take the code out of the form classes and bind to a view-model. The view and viewmodels will be testable and you code will be cleaner.






share|improve this answer













NUnit is really not equiped to test UI. Assuming from the flags you are working with Winforms in c# you should switch to CodedUI tests for this.
It is also advizable to try and take the code out of the form classes and bind to a view-model. The view and viewmodels will be testable and you code will be cleaner.







share|improve this answer












share|improve this answer



share|improve this answer










answered Apr 1 at 8:56









SteveSteve

2391 silver badge10 bronze badges




2391 silver badge10 bronze badges















  • Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

    – Thomas N
    Apr 1 at 9:30

















  • Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

    – Thomas N
    Apr 1 at 9:30
















Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

– Thomas N
Apr 1 at 9:30





Thanks, that looks like a good solution. I have a model behind the UI and that is all tested, I really only want to make sure that forms get constructed/initialized correctly and get some full stack tests in. I'll see how far I get with my interim solution then port to CodedUI if needed later.

– Thomas N
Apr 1 at 9:30








Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.







Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.



















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55380161%2fmodal-dialogs-in-nunit-tests-block-test-runner-forever%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript