C++ Workflow
Google Test
| C++ Workflow | Google Test | |
|---|---|---|
| 9 | 75 | |
| 14,250 | 37,624 | |
| 0.8% | 0.7% | |
| 8.8 | 7.4 | |
| 22 days ago | 8 days ago | |
| C++ | C++ | |
| Apache License 2.0 | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
C++ Workflow
- Workflow v0.10.3 Released, Add WFRepeaterTask for Repeating Asynchronous Operations and Other New Features.
Reference: https://github.com/sogou/workflow/releases/tag/v0.10.3
- wfrest: C++11 Web Framework REST API
wfrest is a c++ async micro web framework based on C++ Workflow
- C++ Workflow : C++Parallel Computing and Asynchronous Networking Engine
Github link
- C++ Workflow engine was accepted as a Debian GNU/Linux installation package
- WFKafkaClient: A simple C++ asynchronous Kafka client
- Show HN: A simple C++ asynchronous MySQL client
- We created FAQ list for C++ Workflow. A C++ parallel computing and asynchronous networking engine.
- C++ Workflow: C++ Parallel Computing and Asynchronous Networking Engine
- Weekly Developer Roundup #21 - Sun Nov 08 2020
sogou/workflow (C++): C++ Programming Paradigm with Asynchronous Networking
Google Test
- Trying Out C++26 Executors
> it always makes me wonder how developers these days reason about what the code is actually going to compile to and perform like
What will it compile to? Check out Compiler explorer [0].
What will it perform like? Use benchmarks [1] [2].
If it's not tested, it's not Engineered.
For tests, I strongly prefer GTest [3], for a fairly consistent API across benchmarking, testing, and mocking.
> there's a constant influx of new syntax and new concepts in C++
Yes, but you don't have to use all of it. You can still use older C++ if you really want to. I wouldn't recommend it though. I think the "sweet spot" right now is around C++17. It's got quite improved safety compared to "old" C++ (say... pre C++11) and is fairly easily understandable if you're coming from "old" C++.
[0]: https://gcc.godbolt.org/
[1]: https://quick-bench.com/
[2]: https://github.com/google/benchmark
[3]: https://github.com/google/googletest
- Adding Automated Testing to My CLI Tool
I chose googletest for my project. Here's my commit. During Hacktoberfest, I explored a lot of repos that already had test cases in order to reduce the miserable side of software(crashing). I had previous experience with Jest.js, a JavaScript testing framework, but this was my first time using a testing framework in C++.
- CLion agora é gratuito!
A versão inicial oferece suporte aos compiladores GNU Compiler Collection (GCC) e Clang e ao depurador GDB, LLDB e Google Test.
- Why I Built a New C++ Build System
[dependency] https://github.com/google/googletest
- The Two Factions of C++
> Googletest ... declares a direct dependency on an older LTS release of absl
Looking at the build configuration code:
https://github.com/google/googletest/blob/main/CMakeLists.tx...
it seems like the dependence on Abseil is optional. i.e. you can use googltest on its own. I wouldn't recommend it (I kinda like doctest), but still.
- Getting started with GoogleTest and CMake
include(FetchContent) # Fetch GoogleTest FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG release-1.11.0 ) FetchContent_MakeAvailable(googletest) # Collect C++ source files recursively file(GLOB_RECURSE CXX_FILES "${CMAKE_CURRENT_LIST_DIR}/*.cpp") add_executable(unit_tests ${CXX_FILES}) # Link GoogleTest libraries target_link_libraries(unit_tests PRIVATE gtest_main ${PROJECT_NAME}_lib # Link to the main project library ) # Include directories (including where GoogleTest is built) target_include_directories(unit_tests PRIVATE ${gtest_SOURCE_DIR}/include) # Add include directories for tests to find headers target_include_directories(unit_tests PRIVATE ${PROJECT_SOURCE_DIR}/src) # Enable testing and discover tests # Discover and run tests include(GoogleTest) gtest_discover_tests(unit_tests)
- Open Source C++ Stack
Google Test
- Creating k-NN with C++ (from Scratch)
cmake_minimum_required(VERSION 3.5) project(knn_cpp CXX) include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG release-1.11.0 ) FetchContent_MakeAvailable(googletest) FetchContent_Declare(matplotplusplus GIT_REPOSITORY https://github.com/alandefreitas/matplotplusplus GIT_TAG origin/master) FetchContent_GetProperties(matplotplusplus) if(NOT matplotplusplus_POPULATED) FetchContent_Populate(matplotplusplus) add_subdirectory(${matplotplusplus_SOURCE_DIR} ${matplotplusplus_BINARY_DIR} EXCLUDE_FROM_ALL) endif() function(knn_cpp_test TEST_NAME TEST_SOURCE) add_executable(${TEST_NAME} ${TEST_SOURCE}) target_link_libraries(${TEST_NAME} PUBLIC matplot) aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/../lib LIB_SOURCES) target_link_libraries(${TEST_NAME} PRIVATE gtest gtest_main gmock gmock_main) target_include_directories(${TEST_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../) target_sources(${TEST_NAME} PRIVATE ${LIB_SOURCES} ) include(GoogleTest) gtest_discover_tests(${TEST_NAME}) endfunction() knn_cpp_test(LinearAlgebraTest la_test.cc) knn_cpp_test(KnnTest knn_test.cc) knn_cpp_test(UtilsTest utils_test.cc)
- Starting with C
Okay, time to start unit tests!!! We will use Unity Test Framework to do unit testing. It is one of widely used testing frameworks alongside with Check, Google Test etc. Just downloading source code, and putting it to the project folder is enough to make it work (that is also why it is portable).
- Just in case: Debian Bookworm comes with a buggy GCC
Updating GCC (it happened to GoogleTest).
What are some alternatives?
developer-roadmap - Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Catch - A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11
doctest - The fastest feature-rich C++11/14/17/20/23 single-header testing framework
Simple-WebSocket-Server
CppUTest - CppUTest unit testing and mocking framework for C/C++