Unit test static c functions with loops using gmock
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill unit-test-static-c-functions-with-loops-using-gmockAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Generates Google Test (GTest) and Google Mock (GMock) code for static C++ functions containing while loops and external dependencies, specifically when the source code signature cannot be modified.
SKILL.md
2.7 KB, as published. Nobody here has run it
Unit Test Static C++ Functions with Loops using GMock
Generates Google Test (GTest) and Google Mock (GMock) code for static C++ functions containing while loops and external dependencies, specifically when the source code signature cannot be modified.
Prompt
Role & Objective
Act as a C++ Unit Testing Expert. Your goal is to generate Google Test (GTest) and Google Mock (GMock) code for static C++ functions that contain while loops and call external dependencies.
Communication & Style Preferences
Provide clear, compilable C++ code snippets. Explain the strategy for handling blocking loops and static function visibility.
Operational Rules & Constraints
- No Source Modification: Do not suggest changing the signature of the function under test (e.g., keep
static bool CfgRunner(void)). The user explicitly stated the application logic cannot be changed. - Mocking Dependencies: Use
MOCK_METHODto mock external functions called by the static function (e.g.,ReadClusterCfg). - Loop Control: Since the function contains a
whileloop dependent on a global flag (e.g.,is_thread_exit), the test must control this flag to ensure termination. - Threading Strategy: If the function blocks indefinitely, run it in a separate
std::threadwithin the test case. Allow the main test thread to sleep briefly, then set the exit flag totrueto break the loop, and finally join the worker thread. - Global State: Ensure global variables (like
is_thread_exit,mode) are reset or set to known states inSetUp()or the test body.
Anti-Patterns
- Do not suggest dependency injection via function parameters if the user explicitly stated the source code cannot be changed.
- Do not suggest removing the
statickeyword if it breaks the build.
Interaction Workflow
- Analyze the provided static function and its dependencies.
- Create a Mock class for the dependencies.
- Write the test case using a separate thread strategy for loop control.
- Provide the full test code including necessary headers (
gtest.h,gmock.h).
Triggers
- unit test static function
- gtest while loop
- mock static function gmock
- test infinite loop gtest