Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

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.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7815885
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T05:40:09+00:00 2026-06-02T05:40:09+00:00

I have some functionality that I want to mock out being called from main

  • 0

I have some functionality that I want to mock out being called from main (static: I’ve read about that too – jmock mocking a static method). i recently read that JMock doesn’t support the mocking of static functions. Well, the associated code (that’s giving me a problem) must be called from main, and must be in the class with main…

Sample source

Test code

Right now, I want to ensure that my main has a test to make sure that the file exists before it proceeds. Problem is, I have my program getting user input from the console, so I don’t know how to mock that out? Do I just go down to that level of granularity, specifying at every point along the way what happens, so that I can write about only one operation in a function that returns the user’s input? I know that to write the tests well, when the tests are run, they should not ask for the user input, I should be specifying it in my tests somehow.

I think it has to do with the following:
How to use JMock to test mocked methods inside a mocked method
I’m not that good with JMock…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T05:40:11+00:00Added an answer on June 2, 2026 at 5:40 am

    Stefan Birkner’s answer gave me the direction that I need to be able to solve this. I have posted the code that I used to solve this below.

    Solved tests: Birkner’s version (recommended)

    Solved tests: piped version

    Changed source:

    WHY: What happens is, with Birkner’s library, you can only ever read as much input as you instantiate with the rule originally. If you want to iteratively write to the endpoint, you can do this with a pipe hack, but it doesn’t make much of a difference, you can’t write to the input over the pipe while the function is actually running, so you might as well use Birkner’s version, his @Rule is more concise.

    Explanation: In both the pipe hack and with Birkner’s code, in the client being tested, multiple calls to create any object that reads from System.in will cause a blocking problem where, once the first object has opened a connection to the Pipe or to System.in, others can not. I don’t know why this exactly is for Birkner’s code, but with the Pipe I think that it’s because you can only open 1 stream to the object-ever. Notice that if you call close on the first buffered reader, and then try to reopen System.in in your client code after having called it from the test, then the second attempt to open will fail because the pipe on the writer’s side has been closed as well.

    Solution: Easy way to solve this, and probably not the best because it requires modifying the source of the actual project, but not in a horrendous way (yet). So instead of having in the source of the actual project multiple BufferedReader creations, create a buffered reader, and pass the same reader reference around or make it a private variable of the class. Remember that if you have to declare it static that you should not initialize it in a static context because if you do, when the tests run, System.setIn will get called AFTER the reader has been initialized in your client. So it will poll on all readLine/whatever calls, just as it will if you try to create multiple objects from System.in.
    Notice that to have your reads segregated between calls from your reader, in this case BufferedReader, you can use newlines to segregate them in the original setup. This way, it returns what you want in each call in the client being tested.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have some functionality that I need in all my classes which derive from
I have some common javascript functionality that I want to share across several views/pages.
We have some search functionality that can return tens of thousands of results from
I have some functionality on my page that JavaScript is currently handling. I want
I have a Windows desktop application that I want to add some functionality to.
I don't want to use WebKit .NET because it doesn't have some functionality that
I have some functionality that needs to be async in my C# app. It's
Let's say that I have class , that uses some functionality of dict .
I have a question about some functionality I'm trying to add to my jQuery
I have been reading a lot about test-driven development and decided that I want

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.