Share test classes between modules












1















I would like to be able to have common test code in a library module of my android projects, so that the different apps in the project can use them.



The problem is, apps cannot import classes from <library>/src/androidTest/java, and if I move that at code into srcmain, it would have to move dependencies from androidTestCompile to compile (more dependencies to the release build).



The only solution right now is to create a separate library to hold the shared test classes, however this has the downside of adding a new library to the project structure, which is not that big a deal, but I'd like to know nonetheless if there are better solutions.



I'd rather implement a Gradle hack at this point if any Gradle (Android plugin) wizards out there can help me find one.










share|improve this question





























    1















    I would like to be able to have common test code in a library module of my android projects, so that the different apps in the project can use them.



    The problem is, apps cannot import classes from <library>/src/androidTest/java, and if I move that at code into srcmain, it would have to move dependencies from androidTestCompile to compile (more dependencies to the release build).



    The only solution right now is to create a separate library to hold the shared test classes, however this has the downside of adding a new library to the project structure, which is not that big a deal, but I'd like to know nonetheless if there are better solutions.



    I'd rather implement a Gradle hack at this point if any Gradle (Android plugin) wizards out there can help me find one.










    share|improve this question



























      1












      1








      1








      I would like to be able to have common test code in a library module of my android projects, so that the different apps in the project can use them.



      The problem is, apps cannot import classes from <library>/src/androidTest/java, and if I move that at code into srcmain, it would have to move dependencies from androidTestCompile to compile (more dependencies to the release build).



      The only solution right now is to create a separate library to hold the shared test classes, however this has the downside of adding a new library to the project structure, which is not that big a deal, but I'd like to know nonetheless if there are better solutions.



      I'd rather implement a Gradle hack at this point if any Gradle (Android plugin) wizards out there can help me find one.










      share|improve this question
















      I would like to be able to have common test code in a library module of my android projects, so that the different apps in the project can use them.



      The problem is, apps cannot import classes from <library>/src/androidTest/java, and if I move that at code into srcmain, it would have to move dependencies from androidTestCompile to compile (more dependencies to the release build).



      The only solution right now is to create a separate library to hold the shared test classes, however this has the downside of adding a new library to the project structure, which is not that big a deal, but I'd like to know nonetheless if there are better solutions.



      I'd rather implement a Gradle hack at this point if any Gradle (Android plugin) wizards out there can help me find one.







      android android-gradle android-testing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 23 '18 at 10:38









      Fantômas

      32.7k156389




      32.7k156389










      asked May 23 '18 at 10:26









      AnthonyAnthony

      269316




      269316
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Since I got no answers, I might as well answer my own question.



          I ended up using the solution I already mentioned in my question:



          Create a library with shared test classes (not actual test cases, but common code to be used in the final ones) under src/main and import it with androidTestCompile or androidTestImplementation for recent gradle versions.



          Got a solution that doesn't involve adding a module? I won't accept my own answer since it doesn't exactly answer the question.






          share|improve this answer































            0














            If you have code (test or otherwise) that can be reused across multiple modules, the appropriate thing to do is exactly what you've done: put it in it's own module and import it into the other modules.



            The small overhead of creating a new module is giving you a lot of power. It allows you to manage its build without having to change every dependent module's build.



            Any other option I've tried (creating a single module that contains all modules' tests, e.g.) ends up being a much bigger headache and a dependency nightmare.






            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50485965%2fshare-test-classes-between-modules%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              Since I got no answers, I might as well answer my own question.



              I ended up using the solution I already mentioned in my question:



              Create a library with shared test classes (not actual test cases, but common code to be used in the final ones) under src/main and import it with androidTestCompile or androidTestImplementation for recent gradle versions.



              Got a solution that doesn't involve adding a module? I won't accept my own answer since it doesn't exactly answer the question.






              share|improve this answer




























                0














                Since I got no answers, I might as well answer my own question.



                I ended up using the solution I already mentioned in my question:



                Create a library with shared test classes (not actual test cases, but common code to be used in the final ones) under src/main and import it with androidTestCompile or androidTestImplementation for recent gradle versions.



                Got a solution that doesn't involve adding a module? I won't accept my own answer since it doesn't exactly answer the question.






                share|improve this answer


























                  0












                  0








                  0







                  Since I got no answers, I might as well answer my own question.



                  I ended up using the solution I already mentioned in my question:



                  Create a library with shared test classes (not actual test cases, but common code to be used in the final ones) under src/main and import it with androidTestCompile or androidTestImplementation for recent gradle versions.



                  Got a solution that doesn't involve adding a module? I won't accept my own answer since it doesn't exactly answer the question.






                  share|improve this answer













                  Since I got no answers, I might as well answer my own question.



                  I ended up using the solution I already mentioned in my question:



                  Create a library with shared test classes (not actual test cases, but common code to be used in the final ones) under src/main and import it with androidTestCompile or androidTestImplementation for recent gradle versions.



                  Got a solution that doesn't involve adding a module? I won't accept my own answer since it doesn't exactly answer the question.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 7 '18 at 12:55









                  AnthonyAnthony

                  269316




                  269316

























                      0














                      If you have code (test or otherwise) that can be reused across multiple modules, the appropriate thing to do is exactly what you've done: put it in it's own module and import it into the other modules.



                      The small overhead of creating a new module is giving you a lot of power. It allows you to manage its build without having to change every dependent module's build.



                      Any other option I've tried (creating a single module that contains all modules' tests, e.g.) ends up being a much bigger headache and a dependency nightmare.






                      share|improve this answer




























                        0














                        If you have code (test or otherwise) that can be reused across multiple modules, the appropriate thing to do is exactly what you've done: put it in it's own module and import it into the other modules.



                        The small overhead of creating a new module is giving you a lot of power. It allows you to manage its build without having to change every dependent module's build.



                        Any other option I've tried (creating a single module that contains all modules' tests, e.g.) ends up being a much bigger headache and a dependency nightmare.






                        share|improve this answer


























                          0












                          0








                          0







                          If you have code (test or otherwise) that can be reused across multiple modules, the appropriate thing to do is exactly what you've done: put it in it's own module and import it into the other modules.



                          The small overhead of creating a new module is giving you a lot of power. It allows you to manage its build without having to change every dependent module's build.



                          Any other option I've tried (creating a single module that contains all modules' tests, e.g.) ends up being a much bigger headache and a dependency nightmare.






                          share|improve this answer













                          If you have code (test or otherwise) that can be reused across multiple modules, the appropriate thing to do is exactly what you've done: put it in it's own module and import it into the other modules.



                          The small overhead of creating a new module is giving you a lot of power. It allows you to manage its build without having to change every dependent module's build.



                          Any other option I've tried (creating a single module that contains all modules' tests, e.g.) ends up being a much bigger headache and a dependency nightmare.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 20 '18 at 23:08









                          ProjectProject

                          350320




                          350320






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50485965%2fshare-test-classes-between-modules%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              這個網誌中的熱門文章

                              Xamarin.form Move up view when keyboard appear

                              Post-Redirect-Get with Spring WebFlux and Thymeleaf

                              Anylogic : not able to use stopDelay()