Witam
Jestem początkujący jeśli chodzi o programowanie a na potrzeby projektu muszę sporządzić testy aplikacji mobilnej. Aplikacja jest bardzo prosta i jest typu To Do. Jakie testy mogę wykonać i jak one mogły by wygladac.
@Przemek Spr: Zacznij od tzw. testów jednostkowych (unit testów). Zazwyczaj używa się jakiś JUnit oraz poczytaj czym jest Mockowanie i jak się Mockuje obiekty.
Wrzuć kawałek kodu to będzie coś łatwiej zasugerować. I czy nie możesz pisać projektu w Kotlin czy uczysz sie specjalnie Javy?
Pisze aplikacje na zaliczenie na studiach i mam ją przetestować tylko nie mam pojęcia jak
com.example
public class AddNewTask extends BottomSheetDialogFragment {
public static final String TAG = "AddNewTask";
private EditText mEditText;
private Button mSaveButtom;
private DataBaseHelper myDb;
public static AddNewTask newInstance(){
return new AddNewTask();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.add_newtask, container , false);
return v;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mEditText = view.findViewById(R.id.edittext);
mSaveButtom = view.findViewById(R.id.button_save);
myDb = new DataBaseHelper(getActivity());
boolean isUpdate = false;
Bundle bundle = getArguments();
if (bundle !=null){
isUpdate = true;
String task = bundle.getString("task");
mEditText.setText(task);
if (task.length()>0){
mSaveButtom.setEnabled(false);
}
}
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().equals("")){
mSaveButtom.setEnabled(false);
mSaveButtom.setBackgroundColor(Color.GRAY);
}else{
mSaveButtom.setEnabled(true);
mSaveButtom.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
final boolean finalIsUpdate = isUpdate;
mSaveButtom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = mEditText.getText().toString();
if(finalIsUpdate){
myDb.updateTask(bundle.getInt("id"), text);
}else{
ToDoModel item = new ToDoModel();
item.setTask(text);
item.setStatus(0);
myDb.insertTask(item);
}
dismiss();
}
});
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
Activity activity = getActivity();
if (activity instanceof OnDialogCloseListener){
((OnDialogCloseListener)activity).onDialogClose(dialog);
}
}
}
TO jest klasa odpowiedzialna za widok dodawania wydarzenie jakoś da się tutaj wykonać test ?
Kod jest słabej jakości. Zmień nazwy zmiennych na czytelniejsze (mEditText i R.id.ediText woła o pomstę do nieba). Wydziel podfunkcje, które zajmują się danym zadaniem. Jeśli jesteś jednak zainteresowany jedynie zaliczeniem na studia i wystarczą Ci byle jakie testy, to napisz testy jednostkowe - np. do jakiejś klasy narzędziowej. Materiał do zapoznania się: https://developer.android.com/codelabs/advanced-android-kotlin-training-testing-basics
Jestem naprawdę początkujący więc jeśli chodzi o jakość kodu staram się ale wiadomo jakie są początki
Czy np.testem może być sprawdzenie czy pusty edittext doda się do listy ?
Naturalnie, ale jeśli piszesz kod staraj się, aby był jak najbardziej czytelny i używaj opisowych nazw. Który rok studiów? Tak, taki test może polegać na takim sprawdzeniu jak napisałeś, ale są to już testy UI (interfejsu użytkownika), które są trudniejsze do napisania i wymagają więcej wiedzy. Jeśli się przy tym upierasz to w drugiej części codelabu zobaczysz pewne przykłady jak to robić: https://developer.android.com/codelabs/advanced-android-kotlin-training-testing-test-doubles
Testy w javie są takie same jak w kotlinie?