抱歉,如果这是一个有点模糊的问题,但是我很难找到一个solid有关如何使用 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);
}
}
因此,一个项目包含模型和逻辑,然后另一个项目包含所述库的测试。没有前端或 UI,所以我想做最少的事情,以便能够测试我的方法是否全部独立工作。
只要您的“库”不包含对 Android SDK 中资源的任何引用,那么除了常规单元测试之外就没有其他任何操作了。在您的 Eclipse 工作区中,假设您有主项目MyAndroidLibProject
,您只需创建一个新的 Java 项目(例如MyAndroidLibProjectUnitTests
)。在这里,您创建普通的单元测试,引用Calculator
主项目中的类(只需确保将主项目添加到测试项目的构建路径中)。
您可能还会在以下位置找到一些附加信息:类似的问题我之前问过自己,也问过自己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
类(代表一个学期的简单数据类)。Semester
位于我的 android 项目内MyMainProject
(但该类本身不包含任何对 Android SDK 的引用)。SemesterTest
位于我的测试项目内MyTestProject
(一个普通的Java项目),两者都有MyMainProject
and MyTestProject
在同一个工作空间中(并且从那时起SemesterTest
具有相同的包名Semester
,我不需要任何特殊的导入声明来引用Semester
任何一个)。MyTestProject
也有MyMainProject
添加到其构建路径(junit.jar也被添加到构建路径中,但这会自动发生,至少在 Eclipse 中我认为是这样)。
正如您所看到的,这只是一个完全普通的单元测试(JUnit 4,只是提到它)。希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)