使用Robolectric 3.0尝试使用值/ styles.xml中的自定义样式进行单元测试,看起来像var express = require('express');
var nodemailer = require("nodemailer");
var xoauth2 = require('xoauth2');
app = express();
var generator = xoauth2.createXOAuth2Generator({
user: {userEmail},
clientId: {clientId},
clientSecret: {clientSecret}
refreshToken: {refreshToken},
accessToken: {accessToken}
});
var smtpTransport = nodemailer.createTransport({
service: "gmail",
auth: {
xoauth2: generator
}
});
var mailOptions = {mailOptions}
app.get('/send',
function (req, res) {
generator.generateToken(function (err, token, access) {
console.log(err, token, access);
smtpTransport.sendMail(mailOptions, function (error, response) {
if (error) {
console.log(error);
res.sendStatus(404);
} else {
console.log(response);
res.sendStatus(200);
}
smtpTransport.close();
});
});
});
app.listen(5000);
,并将该样式应用于<style name="EditTextWhite" parent="TextAppearance.AppCompat">
EditText
。
在测试课程中:
android:theme="@style/EditTextWhite"
当我运行测试时,即使我等了几分钟,运行测试也没完成。这意味着第2行从未执行,因为第1行仍在执行。
因此,我尝试在@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricGradleTestRunner.class)
public class RegisterActivityTest {
RegisterActivity mRegisterActivity;
EditText edtName;
@Before
public void init() {
mRegisterActivity=Robolectric.setupActivity(RegisterActivity.class); // Line 1
edtName = (EditText) mRegisterActivity.findViewById(R.id.edtName); // Line 2
// ...
}
@Test
public void register_Failed_PasswordMismatch() {
// ...
}
@After
public void tearDown() {
mRegisterActivity = null;
}
}
中删除android:theme="@style/EditTextWhite"
成功进行测试。
如何使用Robolectric 3.0对自定义样式小部件进行单元测试?