square / assertj-android Goto Github PK
View Code? Open in Web Editor NEWA set of AssertJ helpers geared toward testing Android.
Home Page: https://square.github.io/assertj-android/
License: Apache License 2.0
A set of AssertJ helpers geared toward testing Android.
Home Page: https://square.github.io/assertj-android/
License: Apache License 2.0
Was just writing a test and really wanted to write something like:
assertThat(viewGroup).has(textView).withText("fest!");
or perhaps
assertThat(viewGroup).has(TextView.class).withText("fest!");
is better design.
I've updated Gradle build tools to version 0.10 and fest version from 1.0.7 to 1.0.8. When I run my robolectric unit tests I receive this error from fest classes:
warning: org/fest/assertions/api/ANDROID.class(org/fest/assertions/api:ANDROID.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
And my unit tests don't run anymore. But if I downgrade to fest v1.0.7 everything just go fine, so that's why I think the error could be in this new version. Also I'm using this plugin to run the robolectric tests: 'org.robolectric.gradle:gradle-android-test-plugin:0.10.+'
I'm assuming everyone else is building this with gradle, so I'm guessing something's wrong with my local setup? In that case, any pointers on what might be wrong? On the other hand, fest-assert
is just for tests, so maybe abortOnError
should be turned off?
./gradlew build
yields:
:androidJavadocs UP-TO-DATE
... <snipped> ...
:assemble UP-TO-DATE
:checkstyleDebug UP-TO-DATE
:checkstyleRelease UP-TO-DATE
:lint
Ran lint on variant release: 558 issues found
Ran lint on variant debug: 558 issues found
Wrote HTML report to file:fest-android/build/lint-results.html
Wrote XML report to fest-android/build/lint-results.xml
:lint FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':lint'.
> Lint found errors in the project; aborting build.
Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
lintOptions {
abortOnError false
}
}
...
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
To see the lint errors: open build/lint-results.html
There are 500 errors similar to this one:
../src/main/java/org/fest/assertions/api/android/widget/AbstractAbsListViewAssert.java:15:
Call requires API level 11 (current min is 7): android.widget.AbsListView#getCheckedItemCount
From the README:
This library is an extension of FEST which aims to make it even easier to test Android.
leads to an empty blog
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
I'll be happy to submit a well tested patch once you confirm this is a bug.
It seems it uses hasText("") when it should use hasTextString("").
Can anybody reproduce?
assertThat(new EditText(anyActivity)).isEmpty(); // always fails
Because I'm sure someone else will file this issue...
Also needs updated with the new multi-module scheme that the readme has.
Would it be possible to push a 1.0.8-SNAPSHOT version to Maven Central?
Assuming that a text view contains the '%' character, calling
assertThat(textView).hasText("any text")
will throw java.util.UnknownFormatConversionException if the assertion fails (expected text is not actual text).
This is due to AssertionError.failureIfErrorMessageIsOverriden() calling MessageFormatter.instance().format().
The solution would be to escape '%' characters in the description to be formatted.
TODO
.jar
to the artifacts when deploying for non-Gradle users.2.0M10 fixes a small incompatibility with Android as reported here.
It might be better for fest-android to depend on this version.
Hi guys,
Are there good way to mix core and android assertions? Currently I static import android assertions class and I have to specify with package assertions from core. Is there easier way?
In general, by design, would it be acceptable to have assertions in the same package as core. Or maybe it is better to write proxy classes that will call core assertions?
Sometimes fails with messages like: "Expected text but was "
This happens because the text is actually a CharSequence that doesn't compare nicely with String. In my case it was a SpannableStringBuilder. Maybe a nice way to fix this would be to check whether the 'text' parameter is actually a String and call toString() on actualText before doing the comparison:
public S hasText(CharSequence text) {
isNotNull();
CharSequence actualText = actual.getText();
if (text instanceOf String) actualText = actualText.toString();
assertThat(actualText) //
.overridingErrorMessage("Expected text <%s> but was <%s>.", text, actualText) //
.isEqualTo(text);
return myself;
}
That way in the 1% case where someone really wants to ensure that a text field has some exact configuration of a SpannableStringBuilder as it's text they can still build one up and pass it in, while the rest of the time we'll get the String comparison we'd intuitively expect.
Beside hasText() and hasTextSize() the class AbstractTextViewAssert is missing the test method hasTextColor(int). In my test case there's need to check the correct color.
Edit: Android returns a TextView's text color with getCurrentTextColor(). Accordingly AbstractTextViewAssert provided hasCurrentTextColor(int). So this issue is closed.
Do you guys have an ETA of a first release of assertj-android into maven-central? (even if it's just a beta release)
I'd like to start using the lib already...
Spread @IntDef
across all int
-accepting methods.
public class BitMaskStringBuilder
private final int flags;
private final Set<String> parts = new LinkedHashSet<String>();
public BitMaskStringBuilder(int flags) {
this.flags = flags;
}
public BitMaskStringBuilder flag(int flag, String flagName) {
if ((flags & flag) != 0) {
parts.add(flagName);
}
}
public String get() {
StringBuilder result = new StringBuilder();
for (String part : parts) {
if (result.length() > 0) {
result.add(", ");
}
result.add(part);
}
return result.toString();
}
}
For all of android.preference.*
.
I'm getting the following stacktrace when running my Robolectric tests. Not sure if this is something that should be addressed in Fest or Robolectric (assuming I'm not doing something wrong).
The problem line looks to be:
int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
org.fest.reflect.exception.ReflectionError: Unable to invoke method 'performCreate' with arguments [null]
at org.fest.reflect.method.Invoker.cannotInvokeMethod(Invoker.java:124)
at org.fest.reflect.method.Invoker.invoke(Invoker.java:116)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:113)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:265)
at org.robolectric.util.ActivityController.create(ActivityController.java:110)
at org.robolectric.util.ActivityController.create(ActivityController.java:120)
at com.company.myapp.activities.MainActivityTest.setupActivity(MainActivityTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:250)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 47
Exception Details:
Location:
com/google/android/gms/common/GooglePlayServicesUtil.<init>()V @19: ifnull
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: 2ab7 036a 2ab6 0370 1303 7203 1202 b803
0000010: 784c 2bc6 001c 2b2a 2ab6 037c 03bd 0004
0000020: b903 8204 0057 a700 144d 2cb8 0386 bf2a
0000030: b703 6db1 4d2c b803 86bf b1
Exception Handler Table:
bci [22, 38] => handler: 41
bci [47, 51] => handler: 52
at com.company.myapp.activities.LocationAwareActivity.servicesConnected(LocationAwareActivity.java:69)
at com.company.myapp.activities.LocationAwareActivity.onCreate(LocationAwareActivity.java:32)
at com.company.myapp.activities.MainActivity.onCreate(MainActivity.java:70)
at android.app.Activity.performCreate(Activity.java:5133)
at org.fest.reflect.method.Invoker.invoke(Invoker.java:112)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:113)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:265)
at org.robolectric.util.ActivityController.create(ActivityController.java:110)
at org.robolectric.util.ActivityController.create(ActivityController.java:120)
at com.company.myapp.activities.MainActivityTest.setupActivity(MainActivityTest.java:21)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:250)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
... 7 more
Hello,
I'm using fest-android for my unit testing and I first would like to thank you for your great job.
Yet, I'm encountering an error since I have updated Android's gradle tool to version 0.12.
Here is the error message : Module version com.squareup:fest-android:1.0.8 depends on libraries but is not a library itself.
That would be great if you could fix this issue.
Thank you very much.
Best regards
public class LruCacheAssert<K, V> extends AbstractAssert<LruCacheAssert<K, V>, LruCache<K, V>> {
should generate:
public static <K, V> LruCacheAssert<K, V> assertThat(LruCache<K, V> actual) {
return new LruCacheAssert<K, V>(actual);
}
Trying to build a sample test app to use Fest in Eclipse.
It fails to build with this error
"The type org.fest.assertions.api.AbstractAssert cannot be resolved. It is indirectly referenced from required .class files"
It looks like the AbstractAssert class is missing.
I tried to build the test sample in the Spoon Sample and it also failed with the same issue.
Have you thought about supporting AssertJ instead of/in addition to fest-assert-2.x? fest-assert-2.x is dormant and if it comes to life again chances are it is going to be less useful (there are plans to remove a lot of assertions, see alexruiz/fest-assert-2.x#159 and https://github.com/joel-costigliola/assertj-core#why-have-we-forked-fest-assert). I'd be willing to provide a patch, but it would be a breaking change (packages have to be renamed) and eventually involve renaming the project to assertj-android.
e.g., SparseArray
(List), LruCache
(Map), etc.
It's possible I'm just being dense, but I was looking for a browseable list of assertions provided by fest-android. Maybe browseable by type.
Or is the intended use here to pass an object to assertThat
and then poke around in autocomplete and see what pops up?
I tried to use this lib via gradle, but when I start the tests it complained that it wasn't able to find the support-v4
library. Since I don't use that in my app (yet) I had to manually add it via instrumentTestCompile
. Would it make sense to include the support library as a dependency to fest-android
?
Update various asserts to honor descriptions passed to "as".
E.g.
assertThat(fooView).as("Foo").isGone()
would print:
Expected Foo to be gone but was visible
For example isGone would contain would be roughly ( based on your current code ):
assertThat(actualVisibility)
.overridingErrorMessage("Expected " +
getWritableAssertionInfo().getDescriptionText()
+ " to be gone but was %s",
visibilityToString(actualVisibility))
.isEqualTo(GONE);
Reference:
I'm currently trying to integrate FEST with robolectric on my project. I succeeded in enabling robolectric but when I try to integrate FEST with one of my text views. I get the following:
java: cannot access android.animation.Animator class file for android.animation.Animator not found
The unit test looks as follows:
@Test
public void textViewVisible() {
TextView textView = (TextView) mActivity.findViewById(R.id.my_id);
assertThat(textView).isVisible()
.hasCurrentTextColor(Color.parseColor("#34a7ff"))
.containsText("1");
}
I'm using Intellij and my module sdk is Android 2.3.3 Google Apis
I'm doing
textView.setText(Html.fromHtml("<b>Some bold text</b> with other text"));
in code, and the assertion
assertThat(textView).hasText("<b>Some bold text</b> with other text");
fails with the message:
Expected text <<b>Some bold text</b> with other text> but was <<b>Some bold text</b> with other text>
I expect the assertion to pass because the text is the same.
The POM pushed to Maven central contains this dependency:
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>19.1.+</version>
<scope>compile</scope>
</dependency>
The version format 19.1.+
is illegal in Maven (i know it comes from Gradle). Please consider modifying the version number.
Hey guys,
First time trying to use this lib. Dropped the dependency in my pom, wrote a quick test just to inflate a View into an Activity, and assert that it isn't null. When I try to compile, I get the error:
class file for android.app.TaskStackBuilder not found
I've only tried a single assertion:
assertThat(view).isNotNull();
the error points back directly to this line.
Your probably well aware, are there stubs in the pipeline for ActionBarSherlock?
It'd be really great if you could create a new release and push it to maven repos. The current one is 8 months old (I assume that from the last modification of the changelog) and it's missing important fixes, e.g.: a5b1529
I replaced the line in my build.gradle
file that declared using Fest-Android with one for AssertJ-Android:
- androidTestCompile('com.squareup:fest-android:1.0.+') {
+ androidTestCompile('com.squareup.assertj:assertj-android:1.0.0') {
The issue is that after replacing all static imports of import static org.fest.assertions.api.ANDROID.assertThat;
with import static org.assertj.android.api.Assertions.assertThat;
, the static import isn't found therefore my Robolectric tests fail to compile. If I change the Gradle line to use compile
instead of androidTestCompile
, the tests work correctly but obviously that's not optimal nor what the documentation describes.
The error returned by javac is the following:
File.java:โ error: package org.assertj.android.api does not exist
import static org.assertj.android.api.Assertions.assertThat;
^
I don't know if it's a bug or a feature ;-)
When I test the visibility of a ListView with assertThat(mLst).isVisible();
I get a test failure with the following trace!
java.lang.VerifyError: org.fest.assertions.internal.Objects
at org.fest.assertions.api.AbstractAssert.(AbstractAssert.java:43)
at org.fest.assertions.api.android.view.AbstractViewAssert.(AbstractViewAssert.java:27)
at org.fest.assertions.api.android.view.AbstractViewGroupAssert.(AbstractViewGroupAssert.java:18)
at org.fest.assertions.api.android.widget.AbstractAdapterViewAssert.(AbstractAdapterViewAssert.java:13)
at org.fest.assertions.api.android.widget.AbstractAbsListViewAssert.(AbstractAbsListViewAssert.java:10)
at org.fest.assertions.api.android.widget.AbstractListViewAssert.(AbstractListViewAssert.java:12)
at org.fest.assertions.api.android.widget.ListViewAssert.(ListViewAssert.java:13)
at org.fest.assertions.api.ANDROID.assertThat(ANDROID.java:920)
at com.fontself.sms.test.MessageActivityTest.testEnterText(MessageActivityTest.java:84)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
e.g., containsText(Pattern)
on TextViewAssert
.
I created two gists. One before running the Python script and one after
Before: https://gist.github.com/ScreenDriver/e1924e84f7050c6054e7
After: https://gist.github.com/ScreenDriver/a75e44595e84efbf0bff
Look at the package names. The dots will replaced with backslashes
I looked at the snapshot release and i see it only comes with AAR packaging. Can we get an artifact with simple jar packaging? This way this library could be easily used in eclipse, where there is no way to use AARs. Actually i see no reason to package this library as an AAR, since this contains only classes, no resources, also its nature fits a jar much more.
isVertical()
and isHorizontal()
.
When using a theme based on Theme.Holo.Light.NoActionBar
, I expect assertThat(getActivity().getActionBar()).isNotShowing();
to pass. An error is triggered instead: expecting actual not to be null
.
We set IntelliJ to SDK level 2.3.3 so that we don't get autocompletes for more modern APIs that aren't going to be available on older phones, but when we do that we get mysterious looking errors for matchers that handle things like android.animation.Animator which didn't exist in 2.3.3. We had the same problem when we didn't link against the support library. When we ran into this on Robolectric we solved it by having multiple versions of classes that were supersets of each other, so there could be ANDROID10.assertThat and ANDROID16.assertThat. It was a little ugly looking to implement, but it's been convenient to use. Maybe Fest-Android could do something similar.
Alternatively, there could be a "legacy" branch or fork of fest-android that catered to the older API levels.
Phil & Dave
Hi,
i am trying to use the assertThat function for a ImageView/view. This is my my first test case with fest library. I am getting runtime exception while running the test cases. I am using Android 4.2 version.Here is exception trace
java.lang.NoClassDefFoundError: org.fest.assertions.api.android.view.ViewAssert
at org.fest.assertions.api.ANDROID.assertThat(ANDROID.java:615)
at com.android.mobile.test.matches.NewUserDefaultMatchesTest.testTapOnEditButtonEnableEditActions(NewUserDefaultMatchesTest.java:134)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
I have added library to Build path and put in libs directory of the test project. Please let me know where am doing wrong.
Regards,
Gogineni
Sorry to post here, but I couldn't find a mailing list anywhere.
I'm unable to build the project locally (see error message below from gradle). Any ideas on how to fix this?
$ ./gradlew
FAILURE: Build failed with an exception.
* Where:
Script 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle' line: 48
* What went wrong:
A problem occurred configuring root project 'fest-android'.
> No such property: GROUP for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.