Windows 10, Android Studio 3.0.
So I just cloned Kotlin Koans repo from master branch and tried to run tests in two different ways:
1. Using IDE, when I press the green arrow next to the test method I see:
Process finished with exit code 1
Class not found: "i_introduction._0_Hello_World.N00StartKtTest"Empty test suite.
2. And when I try to use terminal as described in Kotlin Koans Readme:
gradlew test --tests i_*
it gives me an output of:
:compileKotlin
Using kotlin incremental compilation
Caught an exception trying to connect to Kotlin Daemon
java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context
I've seen a lot of suggestions that there might be tools.jar missing in jdk folder, I am using internal Android Studios jdk and it's presented here.
I also tried to disable gradle deamons - result is still the same.
If the GitHub version is not working for you, you can also install Kotlin Koans via IntelliJ plugin.
Check out the instruction here: https://kotlinlang.org/docs/tutorials/edu-tools-learner.html
you must use the icon "check task" (is the check green icon in photo attachment) on "Task Description" for tests your implementations.
Related
I have created a new project in Android Studio 3.2. Without making any changes I am not able to run all the unit tests in the group. I receive and error saying No tests were found
I am attempting to run the tests by right clicking on the group and clicking Run Tests.
I can run the unit tests if I open up the file and click on the run button next to the class declaration. I can also run the unit tests if I open the project in Android Studio 3.1.4. I can right click on the group and run all the unit tests with no error.
Looking at this bug report, I think it should be fixed in 3.2.1: https://issuetracker.google.com/issues/115708445#comment12
After spending an entire day trying resolve this while writing some unit tests I found one workaround that works for my project.
Basically what my workaround is to add Build to the Before launch options.
After adding this option I'll occasionally get the No tests found error message but simply rerunning the test worked every time after adding that setting.
I'm not sure if it will help with everyone's problem but it seems to have mitigated the issue with my project. Hopefully this works for someone else as well.
The workaround until the bug is fixed is running tests in terminal, just type:
./gradlew test
or
./gradlew testDebugUnitTest. If you are using Windows replace ./gradlew with gradlew.bat. You can also download Android Studio 3.3 Canary from here https://developer.android.com/studio/preview/ – there aren't problems with running tests via this version.
I am working on a new project for Android. Currently, I am using Android studio as IDE. I need to run Unit test and System (CI) test flows which can be run on both Local machine (JVM) and Emulator/Real Device for instrumentation.
Note that I am running all unit tests via command line.
For get the code coverage of the Emulator/Real Device I am using Jacoco.
and running the following command: gradlew createDebugCoverageReport
However, I can't find any way to run the Local machine unit test with coverage report from command line.
The only way is to run it from the android studio by selecting "Run XXX with Code Coverage":
Can you please advise if it is possible to run local unit test from command line with coverage. And get the report as an html file?
Thanks,
Zachi
If I understood correctly, you are trying to run the tests with coverage ability of the IntelliJ-based Android studio.
It basicly can be done using a Command Line Tool of the IntelliJ.
You can read more about it here, but it generally allows you to accomplish everything that can be done from GUI via the command line:
IntelliJ creating command line tools
For more general info regarding the coverage of the IntelliJ tools you can read here:
IntelliJ Code coverage
Hope it helps, good luck.
At this moment there is no default task to create reporting for Junit (local) tests in the gradle Android tools.
However, it's easy to create those.
Just follow the instructions to integrate the custom jacoco.gradle file here:
https://gist.github.com/mrsasha/384a19f97cdeba5b5c2ea55f930fccd4
You will then have tasks like these: test[Flavor]UnitTestCoverage
So to generate the reports, you just have to:
$ ./gradlew test[Flavor]UnitTestCoverage
The report can be generated using the android studio, after you run the test with coverage the results window appears, click the button bordered with red
Check this image:
By running ./gradlew tasks in the terminal if you are using the gradle wrapper or gradle tasks you will have a list of the available verification tasks (see the screenshot below):
You can refer to this link for more thorough test command lines.
You can use testDebugUnitTest, run it as ./gradlew <your_module_name>:testDebugUnitTest and it will run tests related to this particular module + it will generate an html report under your_module/build/reports/tests/testDebugUnitTest folder, with the coverage.
I am trying to set up a CI environment with Jenkins and Robotium. I want to use the same project for both built and test, but seems so tricky to get all working. I was wondering if someone had something like that working and if it can publish at least build.gradle and the project structure. Thanks.
Have been running in production for a few months now. See this question for a sample project and video of how to use robotium with gradle.
https://stackoverflow.com/a/23295849/1965124
As for the jenkins side of things:
Install the android sdk on the machine that will be running jenkins
set up android home variable
install the android plugin
run the following tasks from inside a jenkins job: clean connectedAndroidTest
after running 1 build (it will fail the first time), change the local.properties file to point to the local installation of the android sdk.
Let me know if you need any more pointers, its not as hard as I initially thought it would be.
I configured TeamCity as CI server. Also, project builds by Gradle.
The main idea is to execute gradle connectedInstrumentTest, that task will execute all project's tests on all connected devices, then it will put the test results in standard ant-junit format, so then you can set Jenkins to parse app-folder/build/instrumentTest-results/connected/*.xml test results.
If you got more questions, you can post them to the comments.
I have trying to publish android apk file from Titanium studio but the studio is giving me error.
[ERROR] Program launch failed. Unable to locate Java VM. Please set JAVA_HOME environment
variable.
[ERROR] Unabled to prepare JavaScript for packaging. Error code 4.
However everything is working fine in emulator. Plus Java home variable is set and i have also tested it with HelloWorld example.
Can anyone help
I guess you had a look at how to set up Titanium Studio and SDK. Please ensure that your also set all the all the environment variables especially those related to Android SDK. Finally you should check that you run the correct versions of all required parts. You need Java 6 32bit on Windows for instance.
If all this doesn't help please provide the build.log (in your project folder) and the results of the diagnostic test (Help -> Titanium Studio -> Run Diagnostic Test) and also provide the general log file (same menu as test).
I am creating a unit testing project for my application. It was working fine before. but I had updated the ADT plugin and android SDK. after that I could launch this project but cannot separately run the test cases. It will execute first test case and then stop. Before I could manually execute the second testcase. But now when I tried to do that I got error "Test launch failed due to internal error: Running tests on UI thread".please help me to solve this...
note:using robotium 3.2.1
Are you running the indidual method from a test from the Eclipse Junit window? Try running the test method from project explorer. Right click and run from the Project Explorer, not the JUnit window.
RightHandedMonkey's work-around works for me.
It also looks like this is a known issue and will be fixed in ADT 21 (see: http://code.google.com/p/android/issues/detail?id=34170)
There's also a changelist there to pull the fix if you are building the ADT from source.