-[Application with GuiLogs](#application-with-guilogs)
-[Application with GUIHELPERS](#application-with-guihelpers)
-[Application.h Template](#applicationh-template)
-[GTEST Templates](#gtest-templates)
# Creating a new test suite
1. Create a new file `ClassNameTests.cpp` in `isis/tests/`. For example, the tests for the Cube class should be in `CubeTests.cpp`.
1. Add `#include "gmock/gmock.h"` to the file.
@@ -220,3 +249,182 @@ void IsisMain() {
*[Advanced gtest](https://github.com/abseil/googletest/blob/master/googletest/docs/advanced.md) : This document covers a wide range of advanced options for testing tricky logic and customizing test output.
*[gmock Introduction](https://github.com/abseil/googletest/blob/master/googlemock/docs/ForDummies.md) : A great introduction to how gmock can be used to remove dependencies from tests.
*[gmock Matcher List](https://github.com/abseil/googletest/blob/master/googlemock/docs/CheatSheet.md#matchers) : This whole document is helpful for gmock, but these matchers have some nice uses in gtest too.
# ISIS App Testing Cookbook
## App Conversion + Gtest PR Checklist
Things that all new test additions need to have done.
- [ ] New .cpp/.h source files added as `<appname>.cpp/<appname>.h` in all lowercase.
- [ ] Contents of main.cpp moved into `<appname>.cpp` with a function named `<appname>` in lower camel case.
- [ ] Main.cpp replaced with call to app function in `<appname>.cpp`
- [ ] New app tests added as `ISIS3/isis/tests/FunctionalTests<appname>.cpp` in upper camel case
- [ ] New GTests prefixed with `FunctionalTest<appname>`
- [ ] Old Makefile tests removed
- [ ] New tests passing on Jenkins
## Main.cpp Templates
### Minimum
This is generally used when no logs are printed and special help GUI functionality is needed.
```C++
#include "Isis.h"
#include "Application.h"
#include "app_func.h" # replace with your new header