Tips on JUnit

博客介绍了使用Ant构建Jar包的相关方法。在init任务中,可利用Ant的tstamp获取构建时的当前时间;在jar任务里,通过echo将所需内容写入文件,然后对Java包进行打包。
$Date: 2004/12/27 13:05:44 $ $Id: junit.html,v 1.5 2004/12/27 13:05:44 george Exp $
  • How to put build number into a jar package.
  • 1. In init task, we should use ant's tstamp to get the current time when building.

    <target name="init" description="Prepare for build">
            <!-- To generate Ant time stamp. Dont Delete!!! -->
            <tstamp />
            <propertyfile file="${source.dir}/build.properties">
                <entry key="build.count" type="int" operation="+" value="1" pattern="0000"/>
            </propertyfile>
    
            <mkdir dir="${build.dir}"/>
            <mkdir dir="${dist.dir}"/>
    </target>
    

    2. In jar task, use echo to write what you want into a file, then jar your java package.

        <!--  ===================================================================  -->
        <!--  Creates the jar archive                                              -->
        <!--  ===================================================================  -->
        <target name="jar">
            <!-- ${build.count} is read from ${source.dir}/build.properties -->
            <echo file="${build.dir}/info.txt">Manifest-Version: 1.0
                Sealed: false
                Author: ${user.name}
                Pattern-Version: ${version}
                Build-Date: ${TODAY}
                Build-Time: ${TSTAMP}
                Build-Number: ${build.count}
            </echo>
            <jar jarfile="${dist.dir}/pattern.jar" basedir="${build.dir}" includes="com/**" manifest="${build.dir}/info.txt" />
        </target>
    
package com.weishitechsub.mfhfllcx.fragment.remind; import static android.app.Activity.RESULT_OK; import static android.content.Context.MODE_PRIVATE; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.hfd.common.base.BaseFragment; import com.weishitechsub.mfhfllcx.R; import com.weishitechsub.mfhfllcx.utils.AlarmReceiver; import com.weishitechsub.mfhfllcx.utils.OnMultiClickListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class RemindFragment extends BaseFragment { private static final int REQUEST_CODE = 1; TextView tv_operators, tv_date, tv_remind_date, tv_num, tv_phone, tv_ka1, tv_ka2; ImageView iv_jia, iv_jian; RelativeLayout relative, relative01; private static final String PREF_NAME = "MyPrefs"; private static final String KEY_INPUT_TEXT = "inputText"; private static final String KEY_DATA1 = "data1"; private static final String KEY_TIPS_DATE = "tipsDate"; private static final String KEY_OPERATORS = "operators"; // 用于记录当前选中的按钮 private String selectedButton = "button1"; // 数据模型类 class CardData { String inputText; String data1; String tipsDate; String operators; } // 在 RemindFragment 类中添加成员变量 private CardData card1Data = new CardData(); private CardData card2Data = new CardData(); @Override protected int setLayout() { return R.layout.remind_fragment; } @Override protected void initView() { tv_operators = fvbi(R.id.tv_operators); tv_date = fvbi(R.id.tv_date); tv_remind_date = fvbi(R.id.tv_remind_date); tv_num = fvbi(R.id.tv_num); tv_phone = fvbi(R.id.tv_phone); iv_jia = fvbi(R.id.iv_jia); iv_jian = fvbi(R.id.iv_jian); tv_ka1 = fvbi(R.id.tv_ka1); tv_ka2 = fvbi(R.id.tv_ka2); relative = fvbi(R.id.relative); relative01 = fvbi(R.id.relative01); // 设置按钮标记 tv_ka1.setTag("button1"); tv_ka2.setTag("button2"); } @Override protected void initClick() { iv_jia.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { Intent intent = new Intent(getActivity(), AddActivity.class); // 将选中的按钮信息传递给下个页面 intent.putExtra("selectedButton", selectedButton); startActivityForResult(intent, REQUEST_CODE); } }); tv_ka1.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String buttonId = (String) v.getTag(); handleAddButtonClick(buttonId); selectedButton = buttonId; } }); tv_ka2.setOnClickListener(new OnMultiClickListener() { @Override public void onMultiClick(View v) { String buttonId = (String) v.getTag(); handleAddButtonClick(buttonId); selectedButton = buttonId; } }); } @Override protected void initData() throws ParseException { // 从SharedPreferences加载数据 loadDataFromPreferences(); if ("button1".equals(selectedButton)) { showData(card1Data); } else if ("button2".equals(selectedButton)) { showData(card2Data); } String tipsDate = card1Data.tipsDate; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); Date date = sdf.parse(tipsDate); long targetTimeInMillis = date.getTime(); // 获取 AlarmManager 实例 AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); // 创建一个 PendingIntent,用于在闹钟触发时启动广播接收器 Intent intent = new Intent(getContext(), AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 设置闹钟 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { alarmManager.setExact(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent); } else { alarmManager.set(AlarmManager.RTC_WAKEUP, targetTimeInMillis, pendingIntent); } } private void handleAddButtonClick(String buttonId) { if ("button1".equals(buttonId)) { // 处理按钮1的添加逻辑 relative.setBackgroundResource(R.mipmap.img_ka1_bg); tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F)); tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); showData(card1Data); } else if ("button2".equals(buttonId)) { // 处理按钮2的添加逻辑 relative.setBackgroundResource(R.mipmap.img_ka2_bg); tv_ka2.setTextColor(ContextCompat.getColor(getContext(), R.color.anythink_022E6F)); tv_ka1.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); showData(card2Data); } } private void showData(CardData data) { // 显示数据到对应的TextView if (data != null) { tv_operators.setText(data.operators != null ? data.operators : "暂无数据"); tv_date.setText(data.data1 != null ? data.data1 : "暂无数据"); tv_remind_date.setText(data.tipsDate != null ? data.tipsDate : "暂无数据"); tv_phone.setText(data.inputText != null ? data.inputText : "暂无数据"); } } private void loadDataFromPreferences() { SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, MODE_PRIVATE); // 加载按钮1的数据 card1Data.inputText = prefs.getString(KEY_INPUT_TEXT + "_1", null); card1Data.data1 = prefs.getString(KEY_DATA1 + "_1", null); card1Data.tipsDate = prefs.getString(KEY_TIPS_DATE + "_1", null); card1Data.operators = prefs.getString(KEY_OPERATORS + "_1", null); // 加载按钮2的数据 card2Data.inputText = prefs.getString(KEY_INPUT_TEXT + "_2", null); card2Data.data1 = prefs.getString(KEY_DATA1 + "_2", null); card2Data.tipsDate = prefs.getString(KEY_TIPS_DATE + "_2", null); card2Data.operators = prefs.getString(KEY_OPERATORS + "_2", null); relative01.setVisibility(View.VISIBLE); } private void saveDataToPreferences(CardData data, String suffix) { SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); if (data != null) { editor.putString(KEY_INPUT_TEXT + suffix, data.inputText); editor.putString(KEY_DATA1 + suffix, data.data1); editor.putString(KEY_TIPS_DATE + suffix, data.tipsDate); editor.putString(KEY_OPERATORS + suffix, data.operators); editor.apply(); } } @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) { // 获取返回的信息 String inputText = data.getStringExtra("trim"); String data1 = data.getStringExtra("data"); String tipsDate = data.getStringExtra("tips_date"); String operators = data.getStringExtra("operators"); String selectedButtonFromResult = data.getStringExtra("selectedButton"); // 根据返回的selectedButton更新对应的数据 if ("button1".equals(selectedButtonFromResult)) { relative01.setVisibility(View.VISIBLE); card1Data.inputText = inputText; card1Data.data1 = data1; card1Data.tipsDate = tipsDate; card1Data.operators = operators; saveDataToPreferences(card1Data, "_1"); showData(card1Data); } else if ("button2".equals(selectedButtonFromResult)) { relative01.setVisibility(View.VISIBLE); card2Data.inputText = inputText; card2Data.data1 = data1; card2Data.tipsDate = tipsDate; card2Data.operators = operators; saveDataToPreferences(card2Data, "_2"); showData(card2Data); } } } } package com.weishitechsub.mfhfllcx.utils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; public class AlarmReceiver extends BroadcastReceiver { private static final String CHANNEL_ID = "channel_id"; private static final int NOTIFICATION_ID = 1; @Override public void onReceive(Context context, Intent intent) { // 显示通知 showNotification(context); } private void showNotification(Context context) { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); // 创建 NotificationChannel(适用于 Android 8.0 及以上) if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { android.app.NotificationChannel channel = new android.app.NotificationChannel(CHANNEL_ID, "Channel Name", android.app.NotificationManager.IMPORTANCE_DEFAULT); notificationManager.createNotificationChannel(channel); } // 创建 Notification.Builder 实例 NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(android.R.drawable.ic_dialog_info) .setContentTitle("提醒") .setContentText("您设定的日期已到!") .setPriority(NotificationCompat.PRIORITY_DEFAULT); // 显示通知 notificationManager.notify(NOTIFICATION_ID, builder.build()); } } 如上代码,这个提醒怎么测试
最新发布
11-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值