很抱歉,如果这是一个模糊的问题,但我很难找到一个关于如何使用
Android进行单元测试(隔离测试)的单一实例…
这是我想要实现的一个例子:
// Some class
class Calculator
{
public int Add(int a, int b) { return a+b; }
}
// Simple test
import org.junit.Assert;
import org.junit.Test;
class CalculatorTests
{
@Test
public void should_add_numbers_correctly()
{
Calculator calculator = new Calculator();
int expectedResult = 5 + 5;
int actualResult = calculator.Add(5,5);
Assert.assertEqual(actualResult, expectedResult);
}
}
因此,一个项目包含模型和逻辑,然后另一个项目包含所述库的测试.没有前端或用户界面,所以我想做到最低限度,以便能够测试我的方法都是孤立的.
最佳答案 只要您的“库”不包含Android SDK中对资源的任何引用,除了常规单元测试之外,没有其他任何内容.在您的Eclipse工作区中,假设您拥有主项目MyAndroidLibProject,您只需创建一个新的Java项目(例如MyAndroidLibProjectUnitTests).在这里,您可以在主项目中创建指向Calculator类的普通单元测试(只需确保将主项目添加到测试项目的构建路径中).
您可能还会在我之前问过的similar question中找到一些其他信息,以及该问题的answer.
更新了示例:
import static org.junit.Assert.*;
import org.junit.Test;
public class SemesterTest
{
@Test
public void aNewSemesterShouldHaveANegativeId()
{
Semester semester = new Semester(2010, SemesterType.FALL);
assertEquals(-1, semester.getInternalId());
}
@Test
public void toStringShouldPrintSemesterTypeAndYear()
{
Semester semester = new Semester(2010, SemesterType.FALL);
assertEquals(SemesterType.FALL + " 2010", semester.toString());
}
@Test
public void equalityShouldOnlyDependOnSemesterTypeAndYear()
{
Semester aSemester = new Semester(2010, SemesterType.FALL);
aSemester.setInternalId(1);
Semester anotherSemester = new Semester(2010, SemesterType.FALL);
anotherSemester.setInternalId(2);
assertEquals(aSemester, anotherSemester);
}
}
以上是我自己的Semester类(一个代表一个学期的简单数据类)的测试.学期位于我的android项目MyMainProject内(但该类本身不包含对Android SDK的任何引用). SemesterTest位于我的测试项目MyTestProject(一个普通的Java项目)中,MyMainProject和MyTestProject都在同一个工作区中(因为SemesterTest与Semester具有相同的包名,所以我不需要任何特殊的import语句来引用Semester ). MyTestProject还将MyMainProject添加到其构建路径中(junit.jar也被添加到构建路径中,但这会自动发生,至少在Eclipse中我认为).
正如您所看到的,这只是一个完全普通的单元测试(JUnit 4,只是提到它).希望这可以帮助.