I want to use SpecFlow to test a console app. I want SpecFlow to start the console app and interact with it in exactly the same manner a user would via standard in/out.
Is this possible?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Yes, in fact I have one such solution open on my machine right now. My advice is “Don’t do it!”.
I open the solution and nCrunch (which is simply a hyper efficient test runner) starts up some tests for a scheduling system we use to co-ordinate multiple servers. Some of these tests check timescales and ensure that processes start and stop as they are supposed to. You can tell this because everytime I try and type something a calc.exe window pops up to steal my focus, and it really gets in the way. Is that what you really want to do?
Don’t forget SpecFlow is really a business requirements automation system, and this is “a good thing”. But so far you’ve only focused on the technical issues here.
I’d suggest that you think about your requirements again. Where you want to start a process and check it interacts with you, then simply test its arguments ande results. Use mock’s if you need to isolate its functionality (like I didn’t do when I wrote my tests, oops). Try and make your tests as simple as possible.
Think of it this way.
– Do you really need to test that Process.Start opens a Window? Surely MS got that right? 🙂
– Do you really need to test that Console.ReadLine gets a string?
– And won’t your tests will be simpler if you seperately test MyArgumentParser and MyBusinessLogic with mocks splitting them up?