O documento discute o uso de JSON para serialização e desserialização de objetos, integração com webservices, e testes de software. Ele apresenta exemplos de como usar a biblioteca Jackson para converter objetos Java para JSON e vice-versa, faz requisições HTTP para webservices, e realiza testes unitários e funcionais com JUnit e Robotium.
2. Desenvolvedor de software
www.carloscavalcanti.com
contato@carloscavalcanti.com
twitter @carloscaval
github.com/carloscavalcanti
slideshare.net/carloscavalcanti
sábado, 17 de novembro de 12
3. JSON
Integração com webservice
Testes unitários
Testes funcionais
Fragments
sábado, 17 de novembro de 12
15. Json de um funcionário
{"dataNascimento":60536862000000,
"endereco":"Rua tal",
"nome":"João"}
sábado, 17 de novembro de 12
16. Json de uma lista de
funcionários
[{"dataNascimento":60536862000000,
"endereco":"Rua tal",
"nome":"João"},
{"dataNascimento":58038951600000,
"endereco":"Rua teste",
"nome":"Maria"}]
sábado, 17 de novembro de 12
18. Vamos utilizar a classe
ObjectMapper do
Jackson
sábado, 17 de novembro de 12
19. A classe ObjectMapper nos
dará as ferramentas
necessárias para gerar um
json a partir de uma
instância de um objeto ou
gerar um objeto a partir de
um json
sábado, 17 de novembro de 12
20. Para gerar um JSON a partir de um
objeto precisamos chamar o método
writeValueAsString.
sábado, 17 de novembro de 12
60. Três momentos:
1. o Vermelho: Quando um ou mais testes não estão
passando. A
dupla que está de “posse” do computador deve fazer o
teste passar e a
platéia não deve falar neste momento, para não
atrapalhar.
2. o Verde: Quando os testes são rodados e os mesmos
passados,
aí sim, neste momento a platéia poderá dar sugestões
para melhor o
código.
3. o Amarelo: Resumindo, refatoração. Após a platéia dar
sugestões de modificações.
sábado, 17 de novembro de 12
68. Adicionar no manifest
do projeto de teste
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.exemplorobotium" />
sábado, 17 de novembro de 12
70. Exemplo
public class TestRobotium extends ActivityInstrumentationTestCase2<MainActivity>{
private Solo solo;
public TestRobotium() {
super("com.example.exemplorobotium", MainActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
sábado, 17 de novembro de 12
71. public void testBotaoDaSegundaTela() {
assertTrue(solo.searchText("Testando"));
solo.clickOnButton(0);
solo.enterText(0, "Olá");
solo.clickOnButton(0);
assertTrue(solo.searchText("Olá"));
solo.sleep(2000);
solo.clearEditText(0);
solo.enterText(0, "Teste 01");
solo.clickOnButton(0);
assertTrue(solo.searchText("Teste 01"));
solo.sleep(2000);
solo.clearEditText(0);
solo.enterText(0, "ABC!");
solo.clickOnButton(0);
assertTrue(solo.searchText("ABC!"));
}
sábado, 17 de novembro de 12
82. Criando alguns
“fragmentos”
sábado, 17 de novembro de 12
83. Criar 3 layouts e em cada um inserir um textView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/
android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Frag 1"
android:textColor="#000000"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
sábado, 17 de novembro de 12
84. Para cara fragment devemos criar uma
classe que extenda de Fragment
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, null);
TextView text = (TextView) view.findViewById(R.id.text1);
text.setText("Fragment 1");
return view;
}
}
sábado, 17 de novembro de 12
85. public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle
savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2, null);
TextView text = (TextView) view.findViewById(R.id.text2);
text.setText("Fragment 2");
setRetainInstance(true);
return view;
}
public void setTexto(String msg) {
View view = getView();
if (view != null) {
TextView text = (TextView) view.findViewById(R.id.text2);
text.setText(msg);
}
}
}
sábado, 17 de novembro de 12
86. public class Fragment3 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle
savedInstanceState) {
View view = inflater.inflate(R.layout.fragment3, null);
TextView text = (TextView) view.findViewById(R.id.text3);
text.setText("Fragment 3");
return view;
}
}
sábado, 17 de novembro de 12
87. E para juntarmos os fragments
Usamos uma classe que
extenda de
FragmentActivity
E criamos um arquivo XML para juntar esses
fragments
sábado, 17 de novembro de 12