3

Обязательная привязка при запуске «ApplicationTest» равна NULL, но корректна при запуске «приложения». This post не работает.DataBindingUtil не должен возвращать значение null при запуске из ApplicationTest

ApplicationTest

@RunWith(AndroidJUnit4.class) 
public class ApplicationTest { 

@Rule 
public ActivityTestRule<LoadingActivity> mActivityRule = 
     new ActivityTestRule<>(LoadingActivity.class); 

@Test 
public void loginClickMarkerAndUploadDamageReport() { 
    UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
    //Some initialization code, and then LoginActivity gets started by the App 

//This works.. 
onView(withId(R.id.user_email)).perform(replaceText("[email protected]")); 

    } 
} 

LoginActivity

public class LoginActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final LoginActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login); 
    } 
} 

activity_login

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <data> 

     <variable 
      name="dataSource" 
      type="nl.brandmkrs.damageapp.model.User" /> 
    </data> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" 
     android:id="@+id/user_email" 
     android:text="@{dataSource.password}"/> 
</LinearLayout> 
</layout> 

build.gradle

defaultConfig { 
    minSdkVersion 17 
    targetSdkVersion 25 
    testInstrumentationRunner  
    "android.support.test.runner.AndroidJUnitRunner" 
} 
productFlavors { 
    // The actual application flavor 
    production { 
     minSdkVersion 17 
    } 
    // Test application flavor for UIAutomator tests 
    uiTest { 
     minSdkVersion 18 
    } 
} 
dataBinding { 
    enabled = true 
} 

enter image description here

Выход:

Е/MonitoringInstrumentation: Исключение, с которыми сталкиваются: [email protected] Сбрасывание состояния резьбы на выходы и сгибание фьордов. java.lang.NullPointerException: попытка прочитать из поля 'android.widget.VideoView nl.brandmkrs.damageapp.databinding.LoginActivityBinding.videoView' на ссылке нулевого объекта в nl.brandmkrs.damageapp.view.LoginActivity.onCreate (LoginActivity .java: 96)

+0

У вас есть «testInstrumentationRunner» android.support.test.runner.AndroidJUnitRunner «' в вашей конфигурации градиента и запуска? –

+0

Да, у меня есть это в моем build.gradle. –

+0

Вы пробовали запустить LoginActivity непосредственно из теста. Он также возвращает нуль? – AndroidGuy

ответ

4

Обновление

classpath 'me.tatarka:gradle-retrolambda:3.2.0' 

в

classpath 'me.tatarka:gradle-retrolambda:3.4.0' 

решена проблема ...

+0

У меня такая же проблема, и я не использую retrolambda. Вы уверены, что это исправлено или могло быть что-то еще? – McFarlane

Смежные вопросы